SQLite "INSERT OU REPLACE INTO" ne fonctionne pas
Je dois écrire une requête dans sqlite pour mettre à jour l'enregistrement, s'il existe, ou l'insérer si le dossier n'existe pas déjà. J'ai regardé la syntaxe de INSERT OR REPLACE INTO
de ici. Mais dans mon cas, lorsque j'exécute la requête ci-dessous plusieurs fois le record est dupliqué. j'.e Si j'exécute la requête 5 fois l'enregistrement est inséré 5 fois.
INSERT OR REPLACE INTO NICKS
(id_nick,name_nick,date_creation)
VALUES
('nabeelarif', 'Muhammad Nabeel','2012-03-04')
Avez-vous une idée de ce que je fais de mal. Je suis en train de travailler sur la plate-forme android et de l'utilisation de 'Firefox Sqlite Manager' pour tester ma requête.
source d'informationauteur Muhammad Nabeel Arif
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'avoir un index unique sur l'un ou une combinaison de ces colonnes.
CREATE UNIQUE INDEX idx_something ON NICKS (id_nick, name_nick, date_creation);
Dans Android, vous devez utiliser
SQLiteDatabase.replace()
qui n'a d'insertion ou de mise à jour. Avec l'Android SQLite mise en œuvre, vous n'avez habituellement pas utiliser des requêtes représentés comme des chaînes de caractères. Voir http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#replace%28java.lang.String,%20java.lang.String,%20android.content.ContentValues%29Vous avez une clé primaire ou unique index défini pour votre table? Je crois que les attributs qui constituent la clé primaire ou un index unique sont utilisés pour déterminer si une ligne existe déjà ou pas.
J'ai l'habitude d'utiliser ce code pour que: