E/Database(430): close() was never explicitly called on database '/data/data/com.shenfeinfo/databases/database.db'
E/Database(430): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
E/Database(430): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1847)
E/Database(430): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
E/Database(430): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:854)
E/Database(430): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:847)
E/Database(430): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:544)
E/Database(430): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
E/Database(430): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)
E/Database(430): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:187)
E/Database(430): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:187)
E/Database(430): at com.shenfeinfo.Dao.MyAllInfoPersonDao.<init>(MyAllInfoPersonDao.java:25)
E/Database(430): at com.shenfeinfo.MyAsyncTask.onPreExecute(MyAsyncTask.java:110)
點擊E/Database(430): at com.shenfeinfo.Dao.MyAllInfoPersonDao.<init>(MyAllInfoPersonDao.java:25)跳到此段代碼:
MyDataBase myDataBase = new MyDataBase(context,MyDataBase.DATABASE_NAME, 1);
db = myDataBase.getReadableDatabase();
(指打開數據库操作之前,應用程序沒有關閉遊標或數據库對象。在程序中,對數據库操作完成之後,應該對遊標及數據库進行關閉操作。)
出現這個錯誤的時候检查在退出前關閉了遊標及數據库對象。
如果繼續拋出未關閉的异常,繼續检查,髮現拋出此錯誤之前,在操作數據库過程中還拋出了另外一個錯誤。
原來在拋出第一個錯誤以後,關閉操作未執行,導致再次操作數據库時拋出“應用程序沒有關閉遊標或數據库對象”的錯誤。
检查數據库操作部分代碼,在拋出錯誤處理部分,關閉遊標及數據库對象。
----轉載請添加原文地址