package database; require Exporter; use DBI; use vars qw($VERSION @ISA @EXPORT); $VERSION = 1.00; @ISA = qw(Exporter); ############################################################################### @EXPORT = qw/ db_connect db_disconnect db_exec db_select /; our $FUNC_STATEMENT_HANDLE; ######## Datenbank Funktionen und Beispielnutzung # my $DB_HANDLE; # my $ok = db_connect ($DB_HANDLE, $conf{'DB_TYPE'}, $conf{'DB_NAME'}, $conf{'DB_HOST'}, $conf{'DB_PORT'}, $conf{'DB_USER'}, $conf{'DB_PASS'}); # exit if (!$ok); # my @ret = db_select ($DB_HANDLE, "select password from passwd where user='test'"); # my $i=0; my $j; #foreach my $x (@ret) { # $j=0; # foreach my $y (@{$x}) { # p "i: $i, j: $j, wert: '$y'"; # $j++; # } # $i++; #} # db_disconnect ($DB_HANDLE); sub db_connect { # call: db_connect($DB_HANDLE, $conf{'DB_TYPE'}, $conf{'DB_NAME'}, $conf{'DB_HOST'}, $conf{'DB_PORT'}, $conf{'DB_USER'}, $conf{'DB_PASS'}); my $ok = eval { $_[0] = DBI->connect("DBI:$_[1]:$_[2]:$_[3]:$_[4]", "$_[5]", "$_[6]"); return 0 if ($_[0] == undef); return 1; }; return $ok; } sub db_disconnect { # call: db_disconnect($DB_HANDLE); $_[0]->disconnect(); } sub db_exec { # call: db_exec($DB_HANDLE, "insert|update|delete|alter..."); $FUNC_STATEMENT_HANDLE = $_[0]->prepare ("$_[1]"); $FUNC_STATEMENT_HANDLE->execute(); $FUNC_STATEMENT_HANDLE->finish(); } sub db_select { # call: db_select($DB_HANDLE, "select ... from ..."); # return: @ my @data; my $i; my $j; my @ret; $FUNC_STATEMENT_HANDLE = $_[0]->prepare ("$_[1]"); $FUNC_STATEMENT_HANDLE->execute(); $i=0; while (@data = $FUNC_STATEMENT_HANDLE->fetchrow_array()) { $j=0; foreach (@data) { $ret[$i][$j]=$_; $j++; } $i++; } return @ret; } 1;