Jemand zu Hause?Leser: 34
Quotekonrolllesen lohnt sich wieder :)
2011-07-31T06:37:29 rostider Andere befasst sich mit dem Klassenentwurf für DB-Anbindung. In Letzterem gibt es auch einen Abschnitt zur sinnvollen Verwendung einer Callbackfunktion und ein Abschnitt zum Thema Pagination.
http://rolfrost.de/map/article/dbi
SQL::Abstract bzw.
DBIx::Class anzuschauen.
SQL::Abstract erläutert in vielen beispielen, was es kann und damit auch, was man in einem selbst gestrickten modul alles implementieren müsste. denn sonst kommt man schnell an die grenzen und ist eher gefrustet, dass man für jede neue art eines selects oder updates den code umständlich erweitern muss.
Wie frage ich & perlintro
brian's Leitfaden für jedes Perl-ProblemQuotenichtmal zum lernen finde ich alles gut, z.b. dass die diversen fehler bei den connects und executes unterdrückt werden, ist sicher nicht hilfreich bei der fehlersuche.
Wie frage ich & perlintro
brian's Leitfaden für jedes Perl-Problem1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
sub new{ my $class = shift; my %cfg = ( user => '', pass => '', port => 3306, host => 'localhost', base => '', @_ ); # das Objekt mit dem DB-Handle und dem Statement-Handle my $self = bless{ DBH => undef, STH => undef, }, $class; # Prepared Statement my $q = q(SELECT name FROM unicode WHERE cpd = ?); my $dsn = "DBI:mysql:database=$cfg{base};host=$cfg{host};port=$cfg{port}"; eval{ $self->{DBH} = DBI->connect_cached( $dsn, $cfg{user}, $cfg{pass}, { RaiseError => 1, PrintError => 0, } ); $self->{STH} = $self->{DBH}->prepare_cached($q); }; return $@ ? undef : $self; }
Quotebetrachte ich somit auch als persönliche Ansichtsache Deinerseits, verbunden mit einem untauglichen Versuch, mein Tutorial in ein schlechtes Licht zu rücken.nichtmal zum lernen finde ich alles gut,
2011-07-31T12:18:24 rostiverbunden mit einem untauglichen Versuch, mein Tutorial in ein schlechtes Licht zu rücken.
Wie frage ich & perlintro
brian's Leitfaden für jedes Perl-ProblemQuotedass die diversen fehler bei den connects und executes unterdrückt werden, ist sicher nicht hilfreich bei der fehlersuche.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
sub error { my $self=shift; my $error=''; $error=$self->{_error} if($self->{_error}) $self->{_error}=''; return $error; } sub _set_error { my $self=shift; my $error=shift // ''; $self->{_error}=$error; }
1 2 3 4 5
unless($self->{DBH}->do(...)) { $self->_set_error($self->{DBH}->errorstr()); return undef; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
sub set_error_callback { my $self=shift; my $handler=shift // sub{}; return 0 unless(ref($error) eq 'CODE'); $self->{_error_handler}=$handler; return 1; } sub _set_error { my $self=shift; my $error=shift // ''; $self->{_error}=$error; $self->{_error_handler}->($self,$error) $self->{_error_handler}; }
QuoteEs ist zwar nett alles in eval zu packen, aber hier ist es unnötig, da DBI sauber arbeitet und kein die macht wenn man es nicht wünscht.