Now, I have the C code to check if a table exists: #include <stdio.h> #include "sqlite3.h"
int main(int argc, const char *argv[]){ sqlite3 *db; sqlite3_stmt *stmt; int rc = 0; int hasTable = 0;// flag for the result rc = sqlite3_open("test.db", &db); if( rc ){ printf("cannot open database"); }else{ rc = sqlite3_prepare_v2(db, "select count(*) from sqlite_master where type='table' and lower(name)=lower('tablename')", -1, &stmt, 0); if( !rc ){ rc = sqlite3_step(stmt); if( rc==SQLITE_ROW ) { hasTable = (int)sqlite3_column_int(stmt, 0); printf("Table tablename %s in test.db\n", hasTable ? "exists" : "does not exist"); } } sqlite3_finalize(stmt); } sqlite3_close(db); } It works. And there may be a easier way to do this. Peter Aronson-3 wrote: > > Er, what do you mean by C Syntax -- SQL isn't C? If you meant ANSI SQL > syntax, > you could use: > > select count(*) from sqlite_master where type='table' and > lower(name)=lower('tablename'); > > Instead. But since you're accessing a metadata table that only exists in > SQLite, this isn't particularly more standard. > > Peter > > > > ________________________________ > From: Wei Song 2 <wei.s...@senecacollege.ca> > To: sqlite-users@sqlite.org > Sent: Fri, March 9, 2012 12:36:58 PM > Subject: Re: [sqlite] Building an SQLite Extension: How to check if a > table > exists in the database? > > > I'd like get the result in C Syntax. How can I do it? > > > Peter Aronson-3 wrote: >> >> You got to be a bit careful there, SQLite isn't case-sensitive about >> table >> names, but sqlite_master will preserve the case from the CREATE TABLE >> statement. Instead of >> >> >> select count(*) from sqlite_master where type='table' and >> name='tablename'; >> >> You need something like >> >> select count(*) from sqlite_master where type='table' and >> name='tablename' >> collate nocase; >> >> Peter >> >> >> >> ________________________________ >> From: Roger Andersson <r...@telia.com> >> To: sqlite-users@sqlite.org >> Sent: Fri, March 9, 2012 11:52:31 AM >> Subject: Re: [sqlite] Building an SQLite Extension: How to check if a >> table >> exists in the database? >> >> On 03/09/12 19:39, Wei Song wrote: >>> Hello, >>> >>> I'm developing an SQLite extension which uses a function to set data >>> into >>> a >>>table. I'd like to know how to check if a table exists in a database? >>> >> It's hard to say what you need but maybe >> select count(*) from sqlite_master where type='table' and >> name='tablename'; >> /Roger >> _______________________________________________ >> sqlite-users mailing list >> sqlite-users@sqlite.org >> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users >> _______________________________________________ >> sqlite-users mailing list >> sqlite-users@sqlite.org >> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users >> >> > > -- > View this message in context: > http://old.nabble.com/Building-an-SQLite-Extension%3A-How-to-check-if-a-table-exists-in-the-database--tp33473784p33474119.html > > Sent from the SQLite mailing list archive at Nabble.com. > > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > > -- View this message in context: http://old.nabble.com/Building-an-SQLite-Extension%3A-How-to-check-if-a-table-exists-in-the-database--tp33473784p33480624.html Sent from the SQLite mailing list archive at Nabble.com. _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users