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

前端之家收集整理的这篇文章主要介绍了检查Sqlite C中是否存在记录#前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试检查表中的记录是否已存在.

我怎么能这样做?

我已经写了以下代码

  1. string dbName = "Data Source=searchindex.db";
  2. sqliteConnection con = new sqliteConnection(dbName);
  3. con.Open();
  4. sqliteCommand cmd = new sqliteCommand(con);
  5.  
  6. // If this sql request return false
  7. cmd.CommandText = "SELECT rowid FROM wordlist WHERE word='word'";
  8. cmd.ExecuteNonQuery();
  9.  
  10. // then add record in table
  11. cmd.CommandText = "INSERT INTO wordlist(word) VALUES ('word')";
要检查该记录是否存在,您可以简化代码
  1. cmd.CommandText = "SELECT count(*) FROM wordlist WHERE word='word'";
  2. int count = Convert.ToInt32(cmd.ExecuteScalar());
  3. if(count == 0)
  4. {
  5. cmd.CommandText = "INSERT INTO wordlist(word) VALUES ('word')";
  6. cmd.ExecuteNonQuery();
  7. }

ExecuteScalar将返回查询返回的第一行的第一列.
(该链接适用于sqlServer,但它与sqlite完全相同,因为sqliteCommand应该实现IDbCommand接口)

另一种使用方法如下

  1. cmd.CommandText = "INSERT INTO wordlist (word)
  2. SELECT ('word')
  3. WHERE NOT EXISTS
  4. (SELECT 1 FROM wordlist WHERE word = 'word');";
  5. cmd.ExecuteNonQuery();

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

猜你在找的Sqlite相关文章