2012-03-30 13 views
5

Gestern funktionierte die Anwendung normal, und ich habe meine Codes nicht bearbeitet. Aber jetzt funktioniert es nicht. die logcat istAnwendung gestoppt in Android/SQLITE FEHLER/

close() was never explicitly called on database '/data/data/[myproject]/databases/MyDB' 
android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here 
at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1943) 
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007) 
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986) 
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1051) 
at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:770) 
at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221) 
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157) 
at mn.emondo.parliament.DBAdapter.open(DBAdapter.java:46) 
at mn.emondo.parliament.ProfileActivity.onCreate(ProfileActivity.java:46) 
at android.app.Activity.performCreate(Activity.java:4465) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
at android.app.ActivityThread.access$600(ActivityThread.java:123) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4424) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
at dalvik.system.NativeStart.main(Native Method) 
+0

Sie müssen öffnen rufen in 'ProfileActivity.java überprüfen: 46' und' DBAdapter.java: 46' .Sie vergessen haben, Datenbank-Aufruf-Funktion aufrufen , die Sie in 'ProfileActivity.java:46' verwenden können, um die Datenbank zu öffnen. – Herry

+0

Zeigen Sie Code wird uns mehr Spezifikation geben, wie Sie Datenbank öffnen und schließen. – Herry

Antwort

2

Sobald Sie die Datenbank und den Cursor geöffnet haben, müssen Sie diese beiden schließen, bevor Sie die Klasse oder Aktivität beenden. db.close(); cr.close();

verwenden Sie dies bitte.

1

Sie den Cursor nicht geschlossen haben. Es ist in Ihrem Fehler geschrieben.

So wie ich Ihren Code nicht sehen kann, überprüfen Sie einfach, dass Sie Ihren Cursor nicht geschlossen haben.

Oder versuchen Sie, Ihr Projekt zu reinigen und neu zu erstellen.

1

Sie haben close() Ihre Datenbank vergessen; Beim nächsten Öffnen erhalten Sie eine Ausnahme DatabaseObjectNotClosedException.

1

Wenn es wurde vorher und jetzt nicht mehr arbeiten ,, versuchen, den Versionsnamen der Datenbank zu ändern ,,,

auch nach, wenn sie nicht, dann funktioniert der Name Version ändern und den Namen der Datenbank.

1

versuchen, diese Methode, wenn Sie Daten fertig aus der Datenbank zu holen ..
Wenn Sie offene Datenbank müssen Sie rufen db.open() und wenn Sie Ihre Datenbank Arbeit beenden müssen Sie in der Nähe nennen (Methode). verwenden Sie folgende Methode.

db.close(); 

und Sie müssen Datenbank von Ihrem Activity.java