我正在尝试检查表中的记录是否已存在。
我怎么能这样做?
我已经写了以下代码:
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')";
答案 0 :(得分:14)
要检查该记录是否存在,您可以简化代码
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();
}
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();
这更好,因为您使用单个查询而不是两个(尽管本地数据库中的差异应该是最小的)
答案 1 :(得分:0)
insert into wordlist(word)
select 'foo'
where not exists ( select 1 from wordlist where word = 'foo')
答案 2 :(得分:0)
如果使用的是 sqlite-net-pcl ,则可以编写以下内容。
我有几个表的基类,并且其中有RowExists方法。 相关的源代码如下:
Error