SQLite“INSERT OR REPLACE INTO”无法正常工作

时间:2012-03-05 20:32:06

标签: sqlite

我必须在sqlite中编写一个查询来更新记录(如果它存在)或者如果记录尚不存在则插入它。我从here查看了INSERT OR REPLACE INTO的语法。但就我而言,当我多次执行下面的查询时,记录会重复。即如果我执行5次查询,则会插入5次记录。

INSERT OR REPLACE INTO NICKS 
    (id_nick,name_nick,date_creation)
 VALUES 
    ('nabeelarif', 'Muhammad Nabeel','2012-03-04')

你知道我做错了什么。我正在使用android平台并使用“Firefox Sqlite Manager”来测试我的查询。

4 个答案:

答案 0 :(得分:26)

您需要在这些列中的一个或组合上具有唯一索引。

CREATE UNIQUE INDEX idx_something ON NICKS (id_nick, name_nick, date_creation);

答案 1 :(得分:6)

在Android中,您应该使用SQLiteDatabase.replace(),它会插入或更新。使用Android SQLite实现,通常不使用表示为字符串的原始查询。见http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#replace%28java.lang.String,%20java.lang.String,%20android.content.ContentValues%29

答案 2 :(得分:3)

您是否为表定义了主键或唯一索引?我相信构成主键或唯一索引的属性用于确定行是否已存在。

答案 3 :(得分:-2)

我通常使用此代码:

Cursor cur = mDatabase.rawQuery("select * from NICKS where id_nick='"+id_nick+"');
cur.moveToFirst();
if(cur.getCount()>0){
     update...
}else{
     insert...
}