Once you have ascertained whether the table exists, what are you wanting to
do next?

Exit?

Or create it and then continue with inserts and so on?

If the latter, you can just do CREATE TABLE IF NOT EXISTS and then keep
going.




~~~


On Sun, Mar 11, 2012 at 8:21 AM, Wei Song 2 <wei.s...@senecacollege.ca>wrote:

>
> 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
>
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to