Not familiar with perl, but...
-You should never need to do writable_schema = on for any normal operation. You
can always read the schema even without that.
-To my untrained eye it looks like you made a "name" variable, but never
actually bound it to the statement. Usually that would involve some form of
bind function call or providing it as an argument to the execute function.
For example Python: cur.execute(<statement with ?'s to bind to>, <list of
values to bind>)
cur.execute("select count(*) from sqlite_master where type = 'table' and name =
?;", (<table name you're checking>,))
-----Original Message-----
From: sqlite-users [mailto:[email protected]] On
Behalf Of mikeegg1
Sent: Friday, September 22, 2017 3:36 PM
To: SQLite mailing list
Subject: [sqlite] checking if a table exists
I’m using the statement:
select count(*) from sqlite_master where type = 'table' and name = ‘$NAME’;
This statement works fine in the sqlite3 shell. This statement does not work in
my API.
Is there a PRAGMA I need to issue so I can check for table existence?
TIA
Mike
PERL code to check for table existence:
sub tableexists($$) {
my $dbh = shift;
my $name = shift;
my $tableexists = 0;
$dbh->do("pragma writable_schema = 'on';");
my $sql = "select count(*) from sqlite_master where type = 'table' and name
= '$name';";
my $stmt = $dbh->prepare($sql);
$stmt->execute or die "$0: verifying table name failed: $DBI::errstr";
while(my @row = $stmt->fetchrow_array) {
$tableexists = $row[0];
}
$stmt->finish;
$dbh->do("pragma writable_schema = 'off';");
return $tableexists;
}
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users