SQLite "INSERT OU REPLACE INTO" ne fonctionne pas

Je dois écrire une requête en sqlite pour mettre à jour l'enregistrement s'il existe ou l'insérer si l'enregistrement n'existe pas déjà. J'ai regardé la syntaxe de INSERT OR REPLACE INTO partir d' ici . Mais dans mon cas, lorsque j'exécute la requête ci-dessous, plusieurs fois l'enregistrement est dupliqué. C'est-à-dire si j'exécute la requête 5 fois que 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 mal. Je travaille sur la plate-forme Android et j'utilise ' Firefox Sqlite Manager ' pour tester ma requête.

  • Sécuritaire pour réinitialiser un MediaPlayer dans l'état de préparation?
  • Supporte les liens Amazon et Android Market (Google Play) dans l'application
  • Ignorer la vérification du certificat SSL sur Android React Native
  • Android - Prévention des données d'application ou des fichiers en cours de suppression via l'option "Effacer les données"
  • Comment implémenter Export sqlite Pour Excel / csv dans Android?
  • Android - google map déplacer caméra de position en autre
  • Aucune implémentation n'a été trouvée pour les autochtones
  • Pourquoi Eclipse ne voit-il pas mon téléphone Samsung Galaxy même si je peux transférer des fichiers à l'aide d'une lettre de lecteur?
  • Conception des matériaux: Largeur du tiroir Nav
  • La connexion Twitter a échoué
  • Service.onDestroy () est appelé directement après la création, de toute façon le Service fait son travail
  • Android Studio - Les saveurs peuvent-elles partager le code avec d'autres saveurs?
  • 4 Solutions collect form web for “SQLite "INSERT OU REPLACE INTO" ne fonctionne pas”

    Vous devez disposer d'un index unique sur une ou plusieurs de ces colonnes.

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

    Dans Android, vous devez utiliser SQLiteDatabase.replace() , qui insère ou met à jour. Avec la mise en œuvre d'Android SQLite, vous n'utilisez généralement pas de requêtes brutes représentées sous la forme de chaînes. Voir http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#replace%28java.lang.String,%20java.lang.String,%20android.content.ContentValues%29

    Avez-vous une clé primaire ou un index unique défini pour votre table? Je crois que les attributs qui composent la clé primaire ou un index unique sont utilisés pour déterminer si une ligne existe ou non.

    J'utilise habituellement ce code pour cela:

     Cursor cur = mDatabase.rawQuery("select * from NICKS where id_nick='"+id_nick+"'); cur.moveToFirst(); if(cur.getCount()>0){ update... }else{ insert... } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.