检查Sqlite + C中是否存在记录#

Hel*_*cie 8 c# sqlite c#-4.0

我正在尝试检查表中的记录是否已存在.

我怎么能这样做?

我已经写了以下代码:

string dbName = "Data Source=searchindex.db";
SQLiteConnection con = new SQLiteConnection(dbName);
con.Open();
SQLiteCommand cmd = new SQLiteCommand(con);

// If this sql request return false
cmd.CommandText = "SELECT rowid FROM wordlist WHERE word='word'"; 
cmd.ExecuteNonQuery();

// then add record in table
cmd.CommandText = "INSERT INTO wordlist(word) VALUES ('word')";
Run Code Online (Sandbox Code Playgroud)

Ste*_*eve 15

要检查该记录是否存在,您可以简化代码

cmd.CommandText = "SELECT count(*) FROM wordlist WHERE word='word'"; 
int count = Convert.ToInt32(cmd.ExecuteScalar());
if(count == 0)
{
    cmd.CommandText = "INSERT INTO wordlist(word) VALUES ('word')"; 
    cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

ExecuteScalar将返回查询返回的第一行的第一列.
(该链接是SqlServer的,但它是用于SQLite的相同,这是因为SQLiteCommand应该实现IDbCommand的接口)

另一种使用方法如下

cmd.CommandText = "INSERT INTO wordlist (word) 
                   SELECT ('word')
                   WHERE NOT EXISTS 
                       (SELECT 1 FROM wordlist WHERE word = 'word');";
cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

这甚至更好,因为您使用单个查询而不是两个(尽管本地数据库中的差异应该是最小的)