Provided by: libnetsds-perl_1.301-3_all bug

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