2012-03-30 17 views
5

昨日、アプリケーションが正常に動作していて、コードを編集しませんでした。しかし、今は動作しません。 logcatは、カーソルをクローズしていないアプリケーションがAndroid/SQLITE ERRORで停止しました/

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

からデータベースを開くために呼び出す必要があります:46'と' DBAdapter.java:46'。あなたは、データベース呼び出し機能を呼び出すために忘れてしまいましたこれは、 'ProfileActivity.java:46'でデータベースを開くために使用されている可能性があります。 – Herry

+0

コードを表示すると、データベースのオープン方法とクローズ方法の詳細がわかります。 – Herry

答えて

2

データベースとカーソルを開いたら、クラスまたはアクティビティを終了する前にこれらの2つを閉じる必要があります。 db.close(); cr.close();

これを使用してください。

1

です。それはあなたのエラーに書かれています。

Application did not close the cursor or database object that was opened here 

コードが表示されないので、カーソルを閉じていないことを確認してください。

または、プロジェクトをクリーンアップして再構築してください。

1

close()データベースを忘れました。次回開封すると、DatabaseObjectNotClosedException例外が発生します。

1

それは、以前なく動作していた場合は,, は、データベースのバージョン名を変更してみてください,,,

後であっても、それが動作しない場合は、バージョン名とデータベース名を変更します。

1

データベースからデータを取得するときにこのメソッドを試してください。
データベースを開くときにdb.open()を呼び出す必要があります。データベース作業が終了したらclose()メソッドを呼び出す必要があります。 以下の方法を使用してください。

db.close(); 

、あなたはあなたが `ProfileActivity.javaにチェックする必要があり、あなたのActivity.java

関連する問題