X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/2b664a1f4dd6615a44d6b6aeafca35dc7c6c7984..15d5b55d84399cc17b24c7800a5faeeb02a665bf:/SL/DBUtils.pm?ds=inline diff --git a/SL/DBUtils.pm b/SL/DBUtils.pm index 996add880..7145dc2e6 100644 --- a/SL/DBUtils.pm +++ b/SL/DBUtils.pm @@ -3,7 +3,9 @@ package SL::DBUtils; require Exporter; @ISA = qw(Exporter); -@EXPORT = qw(conv_i conv_date do_query selectrow_query dump_query); +@EXPORT = qw(conv_i conv_date conv_dateq do_query selectrow_query do_statement + dump_query quote_db_date selectall_hashref_query selectfirst_hashref_query + prepare_execute_query); sub conv_i { my ($value, $default) = @_; @@ -15,6 +17,15 @@ sub conv_date { return (defined($value) && "$value" ne "") ? $value : undef; } +sub conv_dateq { + my ($value) = @_; + if (defined($value) && "$value" ne "") { + $value =~ s/\'/\'\'/g; + return "'$value'"; + } + return "NULL"; +} + sub do_query { my ($form, $dbh, $query) = splice(@_, 0, 3); @@ -24,6 +35,7 @@ sub do_query { $dbh->do($query, undef, @_) || $form->dberror($query . " (" . join(", ", @_) . ")"); } + dump_query(LXDebug::QUERY, '', $query . " (" . join(", ", @_) . ")"); } sub selectrow_query { @@ -40,6 +52,17 @@ sub selectrow_query { } } +sub do_statement { + my ($form, $sth, $query) = splice(@_, 0, 3); + + if (0 == scalar(@_)) { + $sth->execute() || $form->dberror($query); + } else { + $sth->execute(@_) || + $form->dberror($query . " (" . join(", ", @_) . ")"); + } +} + sub dump_query { my ($level, $msg, $query) = splice(@_, 0, 3); while ($query =~ /\?/) { @@ -54,4 +77,47 @@ sub dump_query { $main::lxdebug->message($level, $msg . $query); } +sub quote_db_date { + my ($str) = @_; + return "NULL" unless defined $str; + return "current_date" if $str =~ /current_date/; + $str =~ s/'/''/g; + return "'$str'"; +} + +sub prepare_execute_query { + my ($form, $dbh, $query) = splice(@_, 0, 3); + my $sth = $dbh->prepare($query) || $form->dberror($query); + if (scalar(@_) != 0) { + $sth->execute(@_) || $form->dberror($query . " (" . join(", ", @_) . ")"); + } else { + $sth->execute() || $form->dberror($query); + } + + return $sth; +} + +sub selectall_hashref_query { + my ($form, $dbh, $query) = splice(@_, 0, 3); + + my $sth = prepare_execute_query($form, $dbh, $query, @_); + my $result = []; + while (my $ref = $sth->fetchrow_hashref()) { + push(@{ $result }, $ref); + } + $sth->finish(); + + return $result; +} + +sub selectfirst_hashref_query { + my ($form, $dbh, $query) = splice(@_, 0, 3); + + my $sth = prepare_execute_query($form, $dbh, $query, @_); + my $ref = $sth->fetchrow_hashref(); + $sth->finish(); + + return $ref; +} + 1;