DBQuery
view release on metacpan or search on metacpan
lib/DBQuery.pm view on Meta::CPAN
sub new
{
my $class = shift;
my $DB = shift;
my $self;
if (defined $DB->{dsn})
{
$self = {
'dsn' => $DB->{dsn},
'user' => $DB->{db_user},
'pass' => (defined $DB->{db_pass} ? $DB->{db_pass} : ''),
'dbh' => undef,
'sth' => undef,
};
}
else
{
$DB->{driver_name} = 'mysql' unless (defined $DB->{driver_name});
$DB->{driver_name} = ucfirst($DB->{driver_name}) if ($DB->{driver_name} eq "oracle");
$self = {
'driver' => $DB->{driver_name},
'dsn' => $DB->{driver_name} eq 'mysql'
? 'dbi:' . $DB->{driver_name} . ':database=' . $DB->{db_name} .
(defined $DB->{db_host} ? ';host=' . $DB->{db_host} : '') .
(defined $DB->{db_sock} ? ';mysql_socket=' . $DB->{db_sock} : ';mysql_socket=/var/lib/mysql/mysql.sock') .
(defined $DB->{db_port} ? ';port=' . $DB->{db_port} : ';port=3306')
: ($DB->{driver_name} eq 'pgsql'
? 'dbi:' . $DB->{driver_name} . ':dbname=' . $DB->{db_name} . '' .
(defined $DB->{db_host} ? ';host=' . $DB->{db_host} : '') .
(defined $DB->{db_path} ? ';path=' . $DB->{db_path} : '') .
(defined $DB->{db_port} ? ';port=' . $DB->{db_port} : ';port=5432')
: ($DB->{driver_name} eq 'Oracle'
? 'dbi:' . $DB->{driver_name} .
(defined $DB->{db_host} ? ':host=' . $DB->{db_host} : ':host=localhost') .
(defined $DB->{db_port} ? ';port=' . $DB->{db_port} : '') .
(defined $DB->{db_sid} ? ';sid=' . $DB->{db_sid} : '') .
(defined $DB->{db_name} && !defined $DB->{db_sid} ? ';sid=' . $DB->{db_name} : '')
: 'dbi:' . $DB->{driver_name} . (defined $DB->{db_host} ? ':' . $DB->{db_host} : '')
)
),
'user' => $DB->{db_user},
'pass' => (defined $DB->{db_pass} ? $DB->{db_pass} : ''),
'pconnect' => $DB->{db_pconnect},
'utf8' => $DB->{db_enable_utf8},
'autocommit' => (defined $DB->{db_autocommit} ? $DB->{db_autocommit} : 1),
'LongReadLen' => $DB->{db_longreadlen},
'LongTruncOk' => $DB->{db_longtruncok},
'dbh' => undef,
'sth' => undef,
};
}
bless $self, $class;
return $self;
}
sub connect
{
my $self = shift;
if ($_[0] && $self->{driver} eq 'mysql') {
$self->{dbh} = DBI->connect($self->{dsn}, $self->{user}, $self->{pass}, {'RaiseError' => 1, 'mysql_enable_utf8' => 1});
} else {
$self->{dbh} = DBI->connect($self->{dsn}, $self->{user}, $self->{pass}, {'RaiseError' => 1});
}
if ($self->{driver} eq 'mysql') {
$self->{dbh}->{mysql_auto_reconnect} = $self->{pconnect} ? 1 : 0;
$self->{dbh}->{mysql_enable_utf8} = $self->{utf8} ? 1 : 0;
$self->{dbh}->{mysql_no_autocommit_cmd} = $self->{autocommit} ? 0 : 1;
} elsif ($self->{driver} eq 'Oracle') {
$self->{dbh}->{LongReadLen} = $self->{LongReadLen};
$self->{dbh}->{LongTruncOk} = $self->{LongTruncOk};
}
return;
}
sub query
{
my $self = shift;
$self->{sth} = $self->{dbh}->prepare($_[0]);
$self->{sth}->execute();
return $self->{sth};
}
sub quote
{
my $self = shift;
return $self->{dbh}->quote($_[0]);
}
sub insert_id
{
my $self = shift;
return $self->{dbh}->{'mysql_insertid'};
}
sub fetch_array
{
my $self = shift;
return ref($_[0]) eq 'DBI::st' ? $_[0]->fetchrow_array() : $self->{sth}->fetchrow_array();
}
sub fetch_arrayref
{
my $self = shift;
return ref($_[0]) eq 'DBI::st' ? $_[0]->fetchrow_arrayref() : $self->{sth}->fetchrow_arrayref();
}
sub fetch_hash
{
my $self = shift;
return ref($_[0]) eq 'DBI::st' ? $_[0]->fetchrow_hashref() : $self->{sth}->fetchrow_hashref();
}
sub close
{
my $self = shift;
$self->{sth}->finish() if (defined $self->{sth});
$self->{dbh}->disconnect if (defined $self->{dbh});
return;
}
1;
__END__
=head1 NAME
( run in 0.759 second using v1.01-cache-2.11-cpan-39bf76dae61 )