SQLite "INSERT OR REPLACE INTO" не работает

Я должен написать запрос в sqlite, чтобы обновить запись, если она существует, или вставить ее, если запись еще не существует. Я посмотрел синтаксис 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 » для проверки моего запроса.

Solutions Collecting From Web of "SQLite "INSERT OR REPLACE INTO" не работает"

Вам нужно иметь уникальный индекс для одной или нескольких комбинаций этих столбцов.

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

В 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

У вас есть первичный ключ или уникальный индекс, определенный для вашей таблицы? Я считаю, что атрибуты, составляющие первичный ключ или уникальный индекс, используются для определения того, существует ли строка уже или нет.

Я обычно использую этот код для этого:

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