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

时间:2010-08-17 04:16:29

标签: 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);

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

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

3 个答案:

答案 0 :(得分:11)

另一个答案的变化:

select count(type) from sqlite_master where type='table' and name='TABLE_NAME_TO_CHECK';

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

答案 1 :(得分:5)

执行以下SQL:

select 1 from sqlite_master where type='table' and name='TABLE_NAME_TO_CHECK'

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

答案 2 :(得分:2)

看起来你在SQL中缺少右括号。它应该是:

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