DOKK / manpages / debian 12 / libnetsds-perl / NetSDS::DBI.3pm.en
NetSDS::DBI(3pm) User Contributed Perl Documentation NetSDS::DBI(3pm)

NetSDS::DBI - DBI wrapper for NetSDS

        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};

"NetSDS::DBI" module provides wrapper around DBI module.

    $dbh = NetSDS::DBI->new(
                dsn    => 'dbi:Pg:dbname=test;host=127.0.0.1;port=5432',
                login  => 'user',
                passwd => 'topsecret',
        );
    
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
    
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};
        }
    
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};
        }
    
Example:

        # Encode $str to use in queries
        my $str = "some crazy' string; with (dangerous characters";
        $str = $db->quote($str);
    

_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

samples/testdb.pl

DBI, DBD::Pg

1. Make module less PostgreSQL specific.

Michael Bochkaryov <misha@rattler.kiev.ua>

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

2021-12-26 perl v5.32.1