Thread DBD::SQLite - Anzahl Zeilen abfragen (21 answers)
Opened by Kean at 2011-05-09 09:16

rosti
 2011-05-09 09:43
#148340 #148340
User since
2011-03-19
3199 Artikel
BenutzerIn
[Homepage]
user image
2011-05-09T07:16:33 Kean
Wenn ich über DBI aus einer SQLite Datenbank Daten abfrage und nach dem Execute ...


Bereits beim Aufruf von execute() wird die Anzahl der betroffenen Zeilen zurückgegeben oder '0E0' wenn es einen Fehler gab.

Die Fehlerbehandlung in Sachen DBI ist immer kritisch, wahrscheinlich liegt in Deinem Fall ein Fehler vor, der nicht bemerkt wird.

Empfohlen wird, RaiseError zu setzen, und jeden Schritt zu evaluieren. Damit wird jeder Fehler zu einer Exception und es kann $@ abgefragt werden. Es beginnt breits beim Connect:

Code (perl): (dl )
1
2
3
4
5
6
        my $dsn = "DBI:mysql:database=$cfg->{mysql}->{base};host=$cfg->{mysql}->{host};port=$cfg->{mysql}->{port}";    
        eval{
                $self->{DBH} = DBI->connect_cached(
                        $dsn, $cfg->{mysql}->{user}, $cfg->{mysql}->{pass}, {RaiseError => 1, PrintError => 0}
                );
        };


Wobei das übrigens die einzige Möglichkeit ist, über $@ (EVAL_ERROR) zu erfahren, warum der connect schief geht.

Noch ein bischen Code:

Code (perl): (dl )
1
2
3
4
5
6
7
                eval{
                        my $sth = $self->{DBH}->prepare_cached($ref->{query});
                        $self->{SCALAR} = $sth->execute;
                        $self->{CB} = $ref->{CB};
                        $self->{STH} = $sth;
                };
                return if $@;


Damit ist alles erfasst, was irgendwie schief gehen kann.
Last edited: 2011-05-09 09:44:34 +0200 (CEST)

View full thread DBD::SQLite - Anzahl Zeilen abfragen