in reply to
RFC: Databases made easy
If an error did occur (maybe you don't have write permission for the current directory) most likely you will see the error message twice - once generated by the DBI/DBD code, and once from the die $@;
That can easily be prevented by doing:
$dbh->{PrintError} = 0;
The
DBI manual recommends this:
If you turn "RaiseError" on then you'd normally turn "PrintError" off.
my $entries =
eval {
my $entries = 0;
my $sth = $dbh->prepare ($sql); #2
while (my ($name, $age) = each %people) { #3
++$entries if $sth->execute ($name, $age); #4
}
$dbh->commit (); #5
return $entries;
} or do {
my $err = $@;
eval {$dbh->rollback ()} or $err .= "\n Rollback processing
+failed!";
die $err;
};
That code will die if
%people is empty. I'd write that as:
my $entries;
eval {
... stuff ...
$entries++ if $sth->execute($name, $age);
... more stuff ...
$dbh->commit;
1;
} or do {
... rollback and die ...
};