| DBIx-Wrapper-VerySimple documentation | Contained in the DBIx-Wrapper-VerySimple distribution. |
DBIx::Wrapper::VerySimple - Simplify use of DBI
0.051
use DBIx::Wrapper::VerySimple; $db = DBIx::Wrapper::VerySimple->new( $dsn, @other_args ); $hashref = $db->FetchHash($sql, @bind_values); $arrayref = $db->FetchAll($sql, @bind_values); $rv = $db->Do($sql, @bind_values); $original_args = $db->get_args(); # arrayref $dbh = $db->dbh(); # Raw DBI database handle
Provides a wrapper around DBI.
Note: the reason we don't test the connection and attempt to reconnect is that this module is most likely used in a web environment with mod_perl and Apache::DBI, and Apache::DBI will attempt to reconnect if the database connection dies.
These are the public methods provided.
my $db = DBIx::Wrapper::VerySimple->new($dsn,$user,password);
$dsn is a DBI DSN, for example:
$dsn = q{DBI:mysql:database='Accounting'};
or a more complex example:
$database = 'Accounting'; $host = 'data.ourdomain.com'; # Default is usually 'localhost' $port = '4200'; # 3306 is the MySQl default $dsn = "DBI:mysql:database=$database;host=$hostname;port=$port";
$hashref = $db->fetch_hash( $sql, @bind_values );
Returns a HASH ref for one row. Throws an exception if execution fails.
$arrayref = $db->fetch_all( $sql, @bind_values );
Returns an ARRAY ref of HASH refs. @bind_values are optional. Throws an exception if execution fails.
$result_code = $db->Do( $sql, @bind_values );
Executes a non-select SQL statement Throws an exception if execution fails.
$db->dbh();
Returns the raw database handle from DBI.
$db->get_args();
Returns an ARRAY ref of the original args to new();
DBIx::Simple, DBIx::Wrapper - have more features, but are not as simple as this module.
Matisse Enzer <matisse@matisse.net>
Copyright (c)2001-2006 by Matisse Enzer
This package is free software and is provided "as is" without express or implied warranty. It may be used, redistributed and/or modified under the terms of the Perl Artistic License (see http://www.perl.com/perl/misc/Artistic.html)
| DBIx-Wrapper-VerySimple documentation | Contained in the DBIx-Wrapper-VerySimple distribution. |
# $Header: /usr/local/CVS/perl-modules/DBIx-Wrapper-VerySimple/lib/DBIx/Wrapper/VerySimple.pm,v 1.5 2006/11/02 04:10:39 matisse Exp $ ############################################################################### package DBIx::Wrapper::VerySimple; use strict; use warnings; use Carp qw(cluck confess); use DBI; our $VERSION = 0.051; # private instance variables my %DB_HANDLES = (); my %ARGS = (); sub new { my $class = shift; my $self = {}; bless $self, $class; $ARGS{$self} = \@_; # So we can use them to reconnect if needed $DB_HANDLES{$self} = DBI->connect(@_) || confess("Could not connect using DSN: '@_'"); return $self; } sub dbh { my ($self) = @_; return $DB_HANDLES{$self}; } sub get_args { my ($self) = @_; return $ARGS{$self}; } sub FetchHash { ## no critic ProhibitMixedCaseVars my ( $self, $sql, @bind_values ) = @_; my $sth = $DB_HANDLES{$self}->prepare_cached($sql) or confess( $DB_HANDLES{$self}->errstr, "SQL: {$sql}" ); $sth->execute(@bind_values) or confess("SQL: {$sql}"); my $row = $sth->fetchrow_hashref; $sth->finish; return $row; } sub FetchAll { ## no critic ProhibitMixedCaseVars my ( $self, $sql, @bind_values ) = @_; my @rows; my $sth = $DB_HANDLES{$self}->prepare_cached($sql) or confess( $DB_HANDLES{$self}->errstr, "SQL: {$sql}" ); $sth->execute(@bind_values) or confess("SQL: {$sql}"); while ( my $row = $sth->fetchrow_hashref ) { push @rows, $row; } $sth->finish; return \@rows; } { no warnings qw(once); *fetch_hash = \&FetchHash; *fetch_all = \&FetchAll; } sub Do { ## no critic ProhibitMixedCaseVars my ( $self, $sql, @bind_values ) = @_; my $sth = $DB_HANDLES{$self}->prepare_cached($sql) or confess( $DB_HANDLES{$self}->errstr, "SQL: {$sql}" ); my $result_code = $sth->execute(@bind_values) or confess( $DB_HANDLES{$self}->errstr, "SQL: {$sql}" ); $sth->finish; return $result_code; } sub DESTROY { my ($self) = @_; # warn ref $self, " executing DESTROY method. Disconnecting from database"; return $DB_HANDLES{$self}->disconnect if $DB_HANDLES{$self}; } ########################################################################### 1; __END__