2012-05-04 4 views
2

Here is my projectdonnées ne pas insérer dans la base de données préconstruit

Ici, je veux insérer quelque chose dans ma base de données. J'ai également utilisé this link comme référence mais cela va en vain.

Mais voici le journal des erreurs que j'ai.

05-04 16:53:20.272: E/AndroidRuntime(18378): FATAL EXCEPTION: main 
05-04 16:53:20.272: E/AndroidRuntime(18378): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.crews.databaseproto.activity/com.crews.databaseproto.activity.DatabaseProtoActivity}: java.lang.IllegalStateException: database not open 
05-04 16:53:20.272: E/AndroidRuntime(18378): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 
05-04 16:53:20.272: E/AndroidRuntime(18378): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
05-04 16:53:20.272: E/AndroidRuntime(18378): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
05-04 16:53:20.272: E/AndroidRuntime(18378): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
05-04 16:53:20.272: E/AndroidRuntime(18378): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-04 16:53:20.272: E/AndroidRuntime(18378): at android.os.Looper.loop(Looper.java:130) 
05-04 16:53:20.272: E/AndroidRuntime(18378): at android.app.ActivityThread.main(ActivityThread.java:3687) 
05-04 16:53:20.272: E/AndroidRuntime(18378): at java.lang.reflect.Method.invokeNative(Native Method) 
05-04 16:53:20.272: E/AndroidRuntime(18378): at java.lang.reflect.Method.invoke(Method.java:507) 
05-04 16:53:20.272: E/AndroidRuntime(18378): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
05-04 16:53:20.272: E/AndroidRuntime(18378): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
05-04 16:53:20.272: E/AndroidRuntime(18378): at dalvik.system.NativeStart.main(Native Method) 
05-04 16:53:20.272: E/AndroidRuntime(18378): Caused by: java.lang.IllegalStateException: database not open 
05-04 16:53:20.272: E/AndroidRuntime(18378): at android.database.sqlite.SQLiteDatabase.endTransaction(SQLiteDatabase.java:555) 
05-04 16:53:20.272: E/AndroidRuntime(18378): at com.crews.databaseproto.activity.DataBaseHelper.insertData(DataBaseHelper.java:153) 
05-04 16:53:20.272: E/AndroidRuntime(18378): at com.crews.databaseproto.activity.DatabaseProtoActivity.onCreate(DatabaseProtoActivity.java:37) 
05-04 16:53:20.272: E/AndroidRuntime(18378): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
05-04 16:53:20.272: E/AndroidRuntime(18378): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
05-04 16:53:20.272: E/AndroidRuntime(18378): ... 11 more 

Merci d'avance. Désolé pour le mauvais lien

+2

'base de données non ouverte' - Avez-vous ouvert une connexion à votre base de données avant de tenter d'insérer vos données? –

+0

oui j'ai fait @George regarder ici myDbHelper.openDataBase(); \t \t \t myDbHelper.insertData (10, «kaushik», «dhor sala», 22.332322332, 88.2323232); dans DatabaseProtoActivity. – kaushikSuman

Répondre

1
public synchronized SQLiteDatabase getWritableDatabase() 

pas besoin de surcharger cette fonction. Utilisez simplement celui en construction.

En outre,

checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); 

myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); 

changer les modes dans lesquels vous avez ouvert le DB à écrire.

0

données est inséré mais parce que deptID est la clé primaire, il donne l'erreur d'insérer des données en double dans le tableau Dept.

05-05 00:01:09.783: E/Database(1011): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1562) 
+0

Je dis que vos données sont insérées correctement une fois mais parce que par le code que vous essayez d'insérer les mêmes données dans la table et parce que DeptId est primaire votre DB lance Exception. –

+0

DeptId? comment se fait-il qu'il n'y a pas un tel champ? n par la façon dont food_joint_id est la clé primaire ici, mais je n'insère aucune donnée sur ce champ. – kaushikSuman

+0

Vérifiez votre code Envoyé sur MediaFire voici la requête SQL CREATE TABLE Dept (DeptID INTEGER PRIMARY KEY, DeptName TEXT) –

1

Ouvrez le DataBase comme suit

SqliteDatabase db=myDbHelper.getWritableDatabase(); 
ContentValues cv=new ContentValues(); 
cv.put(COLUMN_NAME,10); 
cv.put(COLUMN_NAME,"Kaushik"); 
cv.put(COLUMN_NAME,"dhor sala"); 
cv.put(COLUMN_NAME,22.332322332); 
cv.put(COLUMN_NAME,88.2323232); 
float row id=db.insert(TABLE_NAME,null,cv); 
Questions connexes