Provided by: libnetsds-perl_1.301-4_all
NAME
NetSDS::DBI - DBI wrapper for NetSDS
SYNOPSIS
use NetSDS::DBI; $dbh = NetSDS::DBI->new( dsn => 'dbi:Pg:dbname=test;host=127.0.0.1;port=5432', login => 'user', passwd => 'topsecret', ); print $db->call("select md5(?)", 'zuka')->fetchrow_hashref->{md5};
DESCRIPTION
"NetSDS::DBI" module provides wrapper around DBI module.
CLASS API
new(%params) - class constructor $dbh = NetSDS::DBI->new( dsn => 'dbi:Pg:dbname=test;host=127.0.0.1;port=5432', login => 'user', passwd => 'topsecret', ); dbh() - DBI connection handler accessor Returns: DBI object This method provides accessor to DBI object and for low level access to database specific methods. Example (access to specific method): my $quoted = $db->dbh->quote_identifier(undef, 'auth', 'services'); # $quoted contains "auth"."services" now call($sql, @bind_params) - prepare and execute SQL query Method "call()" implements the following functionality: * check connection to DBMS and restore it * prepare chached SQL statement * execute statement with bind parameters Parameters: * SQL query with placeholders * bind parameters Return: * statement handler from DBI Example: $sth = $dbh->call("select * from users"); while (my $row = $sth->fetchrow_hashref()) { print $row->{username}; } fetch_call($sql, @params) - call and fetch result Paramters: SQL query, parameters Returns: arrayref of records as hashrefs Example: # SQL DDL script: # create table users ( # id serial, # login varchar(32), # passwd varchar(32) # ); # Now we fetch all data to perl structure my $table_data = $db->fetch_call("select * from users"); # Process this data foreach my $user (@{$table_data}) { print "User ID: " . $user->{id}; print "Login: " . $user->{login}; } begin() - start transaction commit() - commit transaction rollback() - rollback transaction quote() - quote SQL string Example: # Encode $str to use in queries my $str = "some crazy' string; with (dangerous characters"; $str = $db->quote($str);
INTERNAL METHODS
_add_sets() - add initial SQL query Example: $obj->_add_sets("set search_path to myscheme"); $obj->_add_sets("set client_encoding to 'UTF-8'"); _add_attrs() - add DBI handler attributes $self->_add_attrs(AutoCommit => 1); _check_connection() - ping and reconnect Internal method checking connection and implement reconnect _connect() - connect to DBMS Internal method starting connection to DBMS
EXAMPLES
samples/testdb.pl
SEE ALSO
DBI, DBD::Pg
TODO
1. Make module less PostgreSQL specific.
AUTHOR
Michael Bochkaryov <misha@rattler.kiev.ua>
LICENSE
Copyright (C) 2008-2009 Net Style Ltd. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA