Hello
I am trying to rationalize some of my code and would like to use a set of
common functions which do database stuff using DBI.
The most logical way for me to do this would be to create a 'GetDBHandle'
function which passes back a handle to the database connection which can
then be passed to other functions which involve individual common queries.
Bearing in mind that:
a) I am unfamiliar with OO principals in perl
b) I am a bit rusty on perl modules in general
c) as well as wanting to do this properly I would like to keep it as simple
as required
could anyone give me pointers for things to bear in mind.
I'm looking at something like the following:
###############################################################
use strict;
use warnings;
use DBI;
use DBD::ODBC; # can this live solely in the module?
use Common::CSAdmin; # this is my module
my $dbh = GetDBHandle('DSN');
my $sql = <<EOF;
SELECT Test FROM tblTest
EOF
my $sth = $dbh->prepare($sql);
$sth->execute() or die "$!";
while (my ($test) = $sth->fetchrow) {
print $test . "\n";
}
$sth->finish;
################################################################
which calls
#################################################################
package Common::CSAdmin;
use strict;
use warnings;
use DBI;
use DBD::ODBC;
sub GetDBHandle($) {}
sub GetDBHandle($) {
my $dsn = shift(@_);
my ($dbusr,$dbpwd,$server,$dbh);
$dbusr = 'usr';
$dbpwd = 'pwd';
$server = 'server';
$dbh = DBI-> connect("DBI:ODBC:$dsn", $dbusr, $dbpwd, {RaiseError => 1,
PrintError => 1}) || die "Could not connect to datasource $dsn";
return $dbh;
}
1;
#####################################################################
but to start with I am getting the following
Subroutine GetDBHandle redefined at D:\Code\iis/Common/CSAdmin.pm line 11.
Undefined subroutine &main::GetDBHandle called at testcsadmin.pl line 7.
which I'm not sure about. Aside from this I guess I have to do something a
bit more clever with the returning of $dbh but I am having trouble finding
examples. Any thoughts?
Thanks
Mark
_______________________________________________
ActivePerl mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs