SQLite 中的 CREATE TABLE IF NOT EXISTS 语句

ste*_*fan 5 sql sqlite

我有一个 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();
Run Code Online (Sandbox Code Playgroud)

我收到以下异常:

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
Run Code Online (Sandbox Code Playgroud)

当我删除该IF NOT EXISTS部分时它工作正常,但我只想在它不存在的情况下创建该表。有什么我做错了吗?

Jef*_*eff 5

这个问题有一些可能有帮助的答案。然而,从这个问题来看,这个答案表明 SQLite 3.3 及更高版本支持IF NOT EXISTS.

根据该问题的答案,您可以尝试使用以下(稍作修改的)查询选择名为“notes”的表的 COUNT:

SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='notes';

然后您可以测试该查询的结果。如果有 0 个结果,则创建表。否则,不要创建该表。