在SQLite中的CREATE TABLE IF NOT EXISTS语句

6

我有一个WPF应用程序,通过ADO.NET (http://adodotnetsqlite.sourceforge.net/) 访问SQLite数据库。到目前为止一切都正常,但是当我尝试执行以下SQL语句时:

 sqlite_cmd.CommandText = "CREATE TABLE IF NOT EXISTS notes (id integer primary key, text varchar(100));";
 sqlite_cmd.ExecuteNonQuery();

我遇到了以下异常:

An exception of type 'Finisar.SQLite.SQLiteException' occurred in SQLite.NET.dll but was not handled in user code.
Additional information: near "NOT": syntax error

当我移除 IF NOT EXISTS 部分时,它可以正常工作,但我只想在表不存在时才创建它。我做错了什么吗?


1
潜在相关于 https://dev59.com/93I-5IYBdhLWcg3w8dUQ 吗?但奇怪的是,那个问题说 SQLite 3.3+ 支持 IF NOT EXISTS ... - Jeff
1
请查看 https://dev59.com/_nA65IYBdhLWcg3wogEb,该问题遇到了相同的问题。 - LinkBerest
1个回答

5
这个问题有一些可能有用的答案。然而,这个答案建议SQLite 3.3及以上版本支持IF NOT EXISTS
根据该问题的答案,您可以尝试使用此(稍作修改的)查询选择名称为“notes”的表格计数: SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='notes'; 然后您可以测试该查询的结果。如果没有结果,创建表格。否则,不创建表格。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接