Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 12451e34

Von Udo Spallek vor fast 18 Jahren hinzugefügt

  • ID 12451e347bef2bbcff8dec050255f01fe5a89a3c
  • Vorgänger fbe66f59
  • Nachfolger da72a663

SL::DBUtils etwas verbessert. Bei jedem Query wird geprüft ob der Debugmodus
eingeschaltet ist-> Eintrag ins Log.
Auch habe ich eine Anleitung für das Modul angefangen, aber bisher nur den
Aufruf einiger Funktionen beschrieben siehe perldoc SL/DBUtils.

Unterschiede anzeigen:

SL/DBUtils.pm
sub do_query {
my ($form, $dbh, $query) = splice(@_, 0, 3);
dump_query(LXDebug::QUERY, '', $query . " (" . join(", ", @_) . ")", @_);
if (0 == scalar(@_)) {
$dbh->do($query) || $form->dberror($query);
} else {
......
sub do_statement {
my ($form, $sth, $query) = splice(@_, 0, 3);
dump_query(LXDebug::QUERY, '', $query . " (" . join(", ", @_) . ")", @_);
if (0 == scalar(@_)) {
$sth->execute() || $form->dberror($query);
} else {
......
sub dump_query {
my ($level, $msg, $query) = splice(@_, 0, 3);
while ($query =~ /\?/) {
my $value = shift(@_);
$value =~ s/\'/\\\'/g;
......
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);
dump_query(LXDebug::QUERY, '', $query . " (" . join(", ", @_) . ")", @_);
my $sth = $dbh->prepare($query) || $form->dberror($query);
if (scalar(@_) != 0) {
$sth->execute(@_) || $form->dberror($query . " (" . join(", ", @_) . ")");
} else {
......
sub selectall_hashref_query {
my ($form, $dbh, $query) = splice(@_, 0, 3);
dump_query(LXDebug::QUERY, '', $query . " (" . join(", ", @_) . ")", @_);
my $sth = prepare_execute_query($form, $dbh, $query, @_);
my $result = [];
while (my $ref = $sth->fetchrow_hashref()) {
......
sub selectfirst_hashref_query {
my ($form, $dbh, $query) = splice(@_, 0, 3);
dump_query(LXDebug::QUERY, '', $query . " (" . join(", ", @_) . ")", @_);
my $sth = prepare_execute_query($form, $dbh, $query, @_);
my $ref = $sth->fetchrow_hashref();
$sth->finish();
......
sub selectfirst_array_query {
my ($form, $dbh, $query) = splice(@_, 0, 3);
dump_query(LXDebug::QUERY, '', $query . " (" . join(", ", @_) . ")", @_);
my $sth = prepare_execute_query($form, $dbh, $query, @_);
my @ret = $sth->fetchrow_array();
$sth->finish();
......
}
1;
__END__
=head1 NAME
SL::DBUTils.pm: All about Databaseconections in Lx
=head1 SYNOPSIS
use DBUtils;
conv_i
conv_date
conv_dateq
quote_db_date($str)
do_query($form, $dbh, $query)
do_statement($form, $sth, $query)
dump_query($level, $msg, $query)
prepare_execute_query($form, $dbh, $query)
my $all_results_ref = selectall_hashref_query($form, $dbh, $query)
my $first_result_hash_ref = selectfirst_hashref_query($form, $dbh, $query);
my @first_result = selectfirst_array_query($form, $dbh, $query); # ==
my @first_result = selectrow_query($form, $dbh, $query);
=head1 DESCRIPTION
=head1 FUNCTIONS
=over 4
=item conv_i
=item conv_date
=item conv_dateq
=item quote_db_date($str)
=item do_query($form, $dbh, $query)
=item do_statement($form, $sth, $query)
=item dump_query($level, $msg, $query)
=item prepare_execute_query($form, $dbh, $query)
=item selectall_hashref_query($form, $dbh, $query)
=item selectfirst_hashref_query($form, $dbh, $query);
=item selectfirst_array_query($form, $dbh, $query); # ==
=item selectrow_query($form, $dbh, $query);
=back
=head1 EXAMPLE
=head1 SEE ALSO
=head1 MODULE AUTHORS
Sven Schoeling
=head1 DOCUMENTATION AUTHORS
Udo Spallek E<lt>udono@gmx.netE<gt>
=head1 COPYRIGHT AND LICENSE
Copyright 2007 by Lx-Office Community
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
=cut

Auch abrufbar als: Unified diff