如何检查sqlite3 c ++ API中是否存在表?

Mat*_*att 11 c++ sqlite

我正在打开一个数据库文件,如果它不存在,可能会创建它.

但由于某种原因,这不会创建表.有任何想法吗?

const char* sql = "CREATE TABLE IF NOT EXISTS blocks(id text primary_key,length numeric)";

sqlite3_stmt *stmt;
rc = sqlite3_prepare_v2(db_, create_table_sql, -1, &stmt, NULL);
rc = sqlite3_step(stmt);
Run Code Online (Sandbox Code Playgroud)

我没有在这里得到它是的我正在检查每个点的返回代码.没有错误.

也许有更好的方法来实现这一目标?

MPe*_*ier 13

另一个答案的变化:

select count(type) from sqlite_master where type='table' and name='TABLE_NAME_TO_CHECK';
Run Code Online (Sandbox Code Playgroud)

如果表不存在则返回0,否则返回1.


Ant*_*ams 5

执行以下SQL:

select 1 from sqlite_master where type='table' and name='TABLE_NAME_TO_CHECK'
Run Code Online (Sandbox Code Playgroud)

如果你得到一行,那么表就存在了.如果结果集为空,则不是.