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.