我正在打开一个数据库文件,如果它不存在,可能会创建它。
但由于某种原因,这不会创建表格。有什么想法吗?
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);
我没有在这里得到它是的我正在检查每个点的返回码。 没有错误。
也许有更好的方法来实现这个目标?
答案 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);";