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.

  • Comment définir une largeur minimale (en caractères) pour un TextView?
  • Le processus du service est abattu après la suppression de l'application du bac d'application
  • Comment démarrer à partir d'une activité de démarrage sur Android?
  • Comment créer des toasts à partir de IntentService? Il est bloqué sur l'écran
  • Est-ce que quelqu'un connaît la signification du résultat de la commande «supérieure» dans Android?
  • Android Studio voyant quels fichiers une modification a été appliquée à
  • Modification des valeurs d'étape dans seekbar?
  • L'échec de l'Android échoue
  • La console de débogage ne montre pas les messages après la mise à niveau de Android Studio vers 2.3
  • Comment définir / éditer par programme le contenu de la vision du Web
  • Mettre à jour les données dans ListFragment dans le cadre de ViewPager
  • Générer un studio d'Android apk signé
  • 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.