Provided by: libropkg-perl_0.4-1.2_all bug

NAME

       RoPkg::DB - A Singleton database pool class

VERSION

       0.1.12

DESCRIPTION

       RoPkg::DB is a database pool class. Using this class you can have access to multiple
       databases (no matter what kind of database), from a single object. RoPkg::DB is ideal in
       persistent environments because at base, is a singleton class. This class is intensively
       used by Simba but it can be used in any other project.

SYNOPSIS

        use RoPkg::DB;

        sub main {
          my $dbp = new RoPkg::DB();

          eval {
            $dbp->Add('dbi:mysql:database=mysql;host=localhost',
                      'root',
                      '',
                      'local');
            $dbp->Add('dbi:mysql:database=somedb;host=somehost',
                      'username',
                      'mypass',
                      'somedb');
          };

          die($@->package . ' said: ' . $@->message) if ref($@);

          print 'Conn to localhost is:',$dbp->db_local,$/,
                'Conn to remote is:',$dbp->db_somedb,$/;

          $dbp->Del('somedb');

        }

SUBROUTINES/METHODS

       All methods (besides new), raise OutsideClass exception when are not called within a class
       instance. Also, each method may raise diferent exceptions from one case to another. Please
       read the documentation for each method to find out what are the exceptions raised by each
       method.

   new()
       new is the contructor of the class. It does not do anything.

   Add($dsn, $dbuser, $dbpass, $conn_name)
       add and initialize a new connection to the pool. $dsn must be in the DBI format. $dsn and
       $dbpass are the username and password used to connect to the database. $conn_name is the
       method who will be used to access the database handle.  Please note that the method that
       will be created will be prefixed with "db_" .

       Example:

        $dbp->Add('dbi:mysql:database=mysql;host=localhost','root',q{},'local');

       The method that will be used to get the database handle for this connection is db_local .

       Add() may raise the following exceptions:

       *) Param::Missing
       *) DB::ConnExists
       *) DB::Connect

       Param::Missing is raised when $dsn, $dbuser or $conn_name are not defined. DB::ConnExists
       is raised when a connection with the name $conn_name already exists. DB::Connect is raised
       when the connection with the database could not be established. Besides this exceptions,
       each database handler has RaiseError set to 1 and PrintError set to 0. Also, when errors
       occurs, DBI will raise a DB exception. The method always returns 1.

   Del($name)
       removes the connection named $name from the pool. The connection is closed first in a
       civilised manner. If the connection $name is not found, DB::ConnNotFound is raised.

   Has($name)
       Returns 0 if the connection named $name does not exists, 1 otherwise. Param::Missing
       exception is raised if $name is not defined.

   Reconnect($name)
       Force a reconnect of the connection named $name. If $name is not defined, Param::Missing
       is raised. If a connection named $name does not exists, DB::ConnNotFound is raised.  This
       method always returns 1.

   TableExists($name, $table_name)
       Returns 1 if the table $table_name exists in the database specified by the connection
       named $name, 0 otherwise. If $name or $table_name parameters are not defined, a
       Param::Missing exception is raised. If the connection $name does not exists,
       DB::ConnNotFound is raised.

DEPENDENCIES

       RoPkg::DB requires perl 5.008 or later and the following modules:

       RoPkg >= 0.4.4
       DBI
       Class::Singleton
       English

DIAGNOSTICS

       This module comes with tests. To run the tests, unpack the source and run 'make test'

PERL CRITIC

       This module is perl critic level 2 compliant (with 1 exception)

CONFIGURATION AND ENVIRONMENT

       This module does not use any configuration files or environment variables. The used
       modules however may use such things. Please refer to each module man page for more
       information.

INCOMPATIBILITIES

       None known to the author

BUGS AND LIMITATIONS

       None known to the author

SEE ALSO

       RoPkg::DBObject RoPkg::Exceptions RoPkg::Utils

AUTHOR

       Subredu Manuel <diablo@iasi.roedu.net>

LICENSE AND COPYRIGHT

       Copyright (C) 2005 Subredu Manuel.  All Rights Reserved.  This module is free software;
       you can redistribute it and/or modify it under the same terms as Perl itself.  The LICENSE
       file contains the full text of the license.