in reply to DBD::SQLite dilemma

I'd go with your third option, because it doesn't preclude you from providing the correct answer.

The current version of DBD::Sybase returns -1 for

$rowcount = $dbh->do("select * from TABLE");
but I jusr verified that a (very) simple change will let it return the correct number of rows.

DBD::Sybase uses it's own implementation of do() to handle multiple result sets, but if DBD::SQLite correctly handles the rows() then you could do something like this:

sub do { my($dbh, $statement, $attr, @params) = @_; my $sth = $dbh->prepare($statement, $attr) or return undef; $sth->execute(@params) or return undef; return undef if $sth->err; while(my $dat = $sth->fetch) { return undef if $sth->err; } my $rows = $sth->rows; ($rows == 0) ? "0E0" : $rows; }
Also note the comments by others in this thread that DBI doesn't guarantee that the rowcount is available for SELECT operations, so IMHO you're off the hook :-)

Michael