Thread Perlartikel auf rolfrost.de
(10 answers)
Opened by rosti at 2011-07-31 16:39
Zu allgemein Deine Antwort;)
Wenn Du schon nicht konkreter werden möchtest, Du ich es: Code (perl): (dl
)
1 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; } Setze zum Testen RaiseError auf 0 und fahre den mysqld runter. Der Fehler tritt beim Erstellen des Statement-Handles auf. Du bekommst keinen DBH, erfährst jedoch nicht die Ursache, auch nicht aus anderen DBI-Fehler-Variablen, aus dem einfachen Grund, weil das Handle nicht existiert. Das ist das, worauf in der DBI-Doku hingewiesen wird. Und genau das habe ich in meinem Tutorial auch geschrieben. Ebenfalls in der DBI-Doku wird empfohlen, zur Fehlerbehandlung das Exception-Modell zu verwenden. Ob Du das persönlich als 'unschön' bezeichnest, ist Deine Sache. Deine lapidare Bemerkung wie Quotebetrachte ich somit auch als persönliche Ansichtsache Deinerseits, verbunden mit einem untauglichen Versuch, mein Tutorial in ein schlechtes Licht zu rücken. Und ja: Wenn ich was schreibe, ist das auch ausführlich getestet. Über Feeback freue ich mich immer, das sollte jedoch schon etwas konkreter sein. Schönen Sonntag, Grüße an Alle, Rolf |