2017-07-06 4 views
0

Je veux supprimer seulement une ligne de ma table de base de données Utilisateur. J'ai essayé this, mais je n'ai aucune idée de comment utiliser SQLITE_ENABLE_UPDATE_DELETE_LIMIT.Android SQLite comment supprimer avec limite

Voici mon code:

SQLiteDatabase sqLiteDatabase = this.openOrCreateDatabase("User", MODE_PRIVATE, null); 

     //sqLiteDatabase.execSQL("INSERT INTO user (name, age) VALUES ('jihyo', 10)"); 

     sqLiteDatabase.execSQL("DELETE FROM user WHERE name ='jihyo' LIMIT 1"); 
     Cursor c = sqLiteDatabase.rawQuery("SELECT * FROM user WHERE name = 'jihyo'", null); 
     int nameIndex = c.getColumnIndex("name"); 
     int ageIndex = c.getColumnIndex("age"); 

     c.moveToFirst(); 
     do { 
      Log.v("name", c.getString(nameIndex)); 
      Log.v("age", c.getString(ageIndex)); 
     } while (c.moveToNext()); 

Voici l'erreur:

android.database.sqlite.SQLiteException: near "LIMIT": syntax error (code 1): , while compiling: DELETE FROM user WHERE name ='jihyo' LIMIT 1

+0

utiliser l'ID unique des données à supprimer pour le supprimer de votre table –

+0

Vous devriez toujours utiliser un id supprimer une personne, c'est plus sûr et mieux –

+0

thx, mais je veux supprimer avec limite. lol – JillAndMe

Répondre

0

Essayez ceci:

db.execSQL("Delete from user where user_id IN (Select user_id from user where name = 'jihyo' limit 1)"); 

[MISE À JOUR]: le = ne fonctionne pas avec le LIMIT opération de sorte que vous devez faire comme ceci:

Cursor c = db.execSQL("Select user_id from user where name = 'jihyo' limit 1"); 
     if (c.moveToFirst()){ 
      String id = c.getString(0); 
      db.execSQL("Delete from user where user_id = "+id); 
     } 
+0

Merci d'avoir répondu à ma question. J'ai ajouté deux données comme name = 'jihyo' age = 10, nom = 'lihyo', age = 10 et sqLiteDatabase.execSQL ("DELETE FROM utilisateur O WH nom IN (SELECT nom FROM utilisateur WHERE nom = 'jihyo' LIMIT 1) "); mais le résultat = il a tout supprimé 'Il semblait que la limite n'était pas le travail .... – JillAndMe

+0

savez-vous pourquoi? – JillAndMe

+0

j'ai mis à jour ma réponse –

0

Vous ne pouvez pas appliquer la limite dans la requête de suppression parce que SUPPRIMERarticle ne pas LIMITE de sorte que vous pouvez sélectionner seul enregistrement à l'aide SELECT requête et appliquer SUPPRIMER sur les bases de la requête sélectionnée eg.

DELETE FROM user WHERE id IN 
(SELECT id FROM user 
WHERE name = 'jihyo' 
LIMIT 1); 

Remarque: vous pouvez utiliser « = » à la place de « IN »

+0

Merci d'avoir répondu à ma question. J'ai ajouté deux données comme name = 'jihyo' age = 10, nom = 'lihyo', age = 10 et sqLiteDatabase.execSQL ("DELETE FROM utilisateur O WH nom IN (SELECT nom FROM utilisateur WHERE nom = 'jihyo' LIMIT 1) "); mais le résultat est = il a supprimé toutes les données Il semblait limite n'était pas de travail .... – JillAndMe

+0

savez-vous pourquoi ??? – JillAndMe

+0

Vous avez appliqué la condition sur la base du nom de sorte qu'il sélectionne la recherche chercher un enregistrement contenant name = 'jihyo' donc supprimer la requête devient 'Supprimer de l'utilisateur où nom dans (' jihyo ') donc il supprimera tous les utilisateurs dont le nom est' jihyo ' , vous devez utiliser un autre nom de colonne unique comme id ou une autre colonne. –