SQLite數據庫,應用程序沒有關閉遊標或數據庫對象

Android 2.3.3           
Eclipse Version: 3.7.0           
LogCat  


LogCat 報錯信息:

02-13 11:58:13.759: ERROR/Database(432): close() was never explicitly called on database '/data/data/com.taobao.htc/databases/taobaoHtc.db' 
02-13 11:58:13.759: ERROR/Database(432): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
02-13 11:58:13.759: ERROR/Database(432): at android.database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1847)
02-13 11:58:13.759: ERROR/Database(432): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
02-13 11:58:13.759: ERROR/Database(432): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:854)
02-13 11:58:13.759: ERROR/Database(432): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:847)
02-13 11:58:13.759: ERROR/Database(432): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:544)
02-13 11:58:13.759: ERROR/Database(432): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
02-13 11:58:13.759: ERROR/Database(432): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)
02-13 11:58:13.759: ERROR/Database(432): at com.taobao.htc.db.RecordDBHelper.query(RecordDBHelper.java:49)
02-13 11:58:13.759: ERROR/Database(432): at com.taobao.htc.manage.RecordDBopt.get(RecordDBopt.java:78)
02-13 11:58:13.759: ERROR/Database(432): at com.taobao.htc.manage.RecordMessage.sendMseeage(RecordMessage.java:111)
02-13 11:58:13.759: ERROR/Database(432): at com.taobao.htc.manage.RecordMessage.sendMseeage(RecordMessage.java:87)
02-13 11:58:13.759: ERROR/Database(432): at com.taobao.htc.Report.run(Report.java:49)
02-13 11:58:13.759: ERROR/Database(432): at java.lang.Thread.run(Thread.java:1019)
02-13 11:58:13.830: WARN/ActivityManager(62): Launch timeout has expired, giving up wake lock!
02-13 11:58:14.381: DEBUG/dalvikvm(432): GC_CONCURRENT freed 771K, 57% free 2908K/6727K, external 2013K/2137K, paused 7ms+5ms
02-13 11:58:14.630: DEBUG/dalvikvm(432): GC_FOR_MALLOC freed 867K, 58% free 2836K/6727K, external 2013K/2137K, paused 178ms


發生錯誤原因分析:

主要錯誤:

02-13 11:58:13.759: ERROR/Database(432): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here


出錯處代碼

		SQLiteDatabase db = getWritableDatabase();

 

意思是指在此處打開數據庫操作之前,應用程序沒有關閉遊標或數據庫對象。

在應用中,對數據庫操作完成後,應該對遊標及數據庫進行關閉操作

		if (!cur.isClosed()) {
			cur.close();
		}
		db.close();


解決辦法:

檢查操作數據庫的相關源代碼,增加關閉“cursor or database object”的代碼 。

PS。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章