package GS::DBIUtilities;
require Exporter;
@ISA = ("Exporter");
use DBI;
my $module_dbh;
sub
GetDBH
{
#--------------------------------------------------------------
# Connect to the amt db and return a db
#--------------------------------------------------------------
    my $db = shift;
    $module_dbh = DBI->connect("DBI:mysql:database=$db", "xxxxx", "xxxxx");
    return $module_dbh;
}
sub
DropDBH
{
#---------------------------------------------------------------
# Disconnect from DB
#---------------------------------------------------------------
	$module_dbh->disconnect if $module_dbh;
}
sub
InsertMultipleValues
{
#---------------------------------------------------------------
# Inserts contents of a hashref into the db table specified
#---------------------------------------------------------------
    my $dbh = shift;
    my $table = shift;
    my $Inserts = shift;
    my @cols = keys %$Inserts;
    my @vals = @$Inserts{@cols};
    my $cols = join ',', @cols;
    my $places = '?,' x @vals;
    chop $places;
    my $sth = $dbh->prepare("INSERT INTO $table ($cols) VALUES
($places)") or die $dbh->errstr;
    $sth->execute(@vals) or die "$dbh->errstr : $table";
}
sub
ReplaceMultipleValues
{
#---------------------------------------------------------------
# Replaces contents of a hashref into the db table specified
#---------------------------------------------------------------
    my $dbh = shift;
    my $table = shift;
    my $Replaces = shift;
    my @cols = keys %$Replaces;
    my @vals = @$Replaces{@cols};
    my $cols = join ',', @cols;
    my $places = '?,' x @vals;
    chop $places;
    my $sth = $dbh->prepare("REPLACE INTO $table ($cols) VALUES
($places)") or die $dbh->errstr;
    $sth->execute(@vals) or die $dbh->errstr;
}
sub
FetchSingleItem
{
#---------------------------------------------------------------
# Fetch a single item from a database
#---------------------------------------------------------------
    my $dbh = shift;
    my $FetchCol = shift;
    my $table = shift;
    my $SearchCol = shift;
    my $SearchVal = shift;
    my $sth = $dbh->prepare("SELECT $FetchCol FROM $table WHERE
$SearchCol = ? LIMIT 1") or die $dbh->errstr;
    $sth->execute($SearchVal);
    my @ref = $sth->fetchrow_array;
    return $ref[0];
}
sub
InsertAndGetID
{
#---------------------------------------------------------------
# inserts an entry into a db and gets the auto_increment ID
#---------------------------------------------------------------
    my $dbh = shift;
    my $table = shift;
    my $Inserts = shift;
    my $IDCol = shift;
    $Inserts->{$IDCol} = 'NULL';
    $dbh->do("LOCK TABLES $table WRITE") or die $dbh->errstr;
    InsertMultipleValues($dbh,$table,$Inserts);
    $sth = $dbh->prepare("SELECT LAST_INSERT_ID() FROM $table") or die
$dbh->errstr;
    $sth->execute or die $dbh->errstr;
    my @ary = $sth->fetchrow_array or die $dbh->errstr;
    $dbh->do("UNLOCK TABLES") or die $dbh->errstr;
    $sth->finish;
    return $ary[0];
}
sub
FetchStar
{
#---------------------------------------------------------------
# Retrieves the whole of each row that matches the submitted
# criteria.   Returns a hashref if there is only one row,
# otherwise a ref to an array of hashes.
#---------------------------------------------------------------
    my $dbh = shift;
    my $table = shift;
    my $SearchCol = shift;
    my $SearchVal = shift;
    my $sth = $dbh->prepare("SELECT * FROM $table WHERE $SearchCol =
?") or die $dbh->errstr;
    $sth->execute($SearchVal);
    my @returns;
    while (my $ref = $sth->fetchrow_hashref) {
        push @returns, $ref;
    }
    if (@returns <= 1) {
        return $returns[0];
    }
    else {
        return \@returns;
    }
}
@EXPORT = qw/
    GetDBH
    DropDBH
    InsertMultipleValues
    ReplaceMultipleValues
    FetchStar
    FetchSingleItem
    InsertAndGetID
/;
1;#
 
 
No comments:
Post a Comment