2010-08-14 5 views
6

Je développe une application qui nécessite l'utilisation d'une base de données SQLite. J'ai implémenté la récupération des données, mais je suis confronté à des problèmes lorsque j'essaie d'insérer des données. Le problème que je rencontre est que les nouvelles données que je saisis ne sont pas stockées, c'est-à-dire que rien de nouveau n'est entré dans la base de données.Les données ne sont pas insérées dans la base de données Sqlite dans android

Ceci est mon code d'insertion, myDataBase est une instance de SQLiteDatabase.

public void insertTitle(String Recipe) 
{ 
    ContentValues initialValues = new ContentValues(); 
    initialValues.put(COLUMN_NAME,value); 
    myDataBase.insert(ZRECIPE, null, initialValues); 
} 
+0

Quelle est la valeur de retour de 'insert()': -1 (erreur), ou une pièce d'identité de ligne valide? – LarsH

Répondre

2

Vous avez oublié de valider la transaction.

+2

Salut, mais comment commettre la transcodation ..? – Jaymin

+0

Pas sûr mais je suppose que 'setTransactionSuccessful()' est en fait le commit. – Stan

6

Essayez-le de cette façon. Vous devez d'abord commencer la transaction, puis la marquer comme réussie et se terminer.

try { 
     myDataBase.beginTransaction(); 
     myDataBase.insert(ZRECIPE, null, initialValues); 
     myDataBase.setTransactionSuccessful(); 
     } 
    finally { 
     myDataBase.endTransaction(); 
     } 
+0

Est-il nécessaire de faire une transaction explicite pour l'engager? SQLite n'utilise-t-il pas le mode autocommit par défaut? – LarsH

-1

Essayez avec ce code cela peut vous aider à

public void insertTitle(String Recipe) 
{ 
    ContentValues initialValues = new ContentValues(); 
    initialValues.put(COLUMN_NAME,Recipe); 
    myDataBase.insert(ZRECIPE, null, initialValues); 
} 
Questions connexes