期盼死亡的小丑 发表于 2016-12-1 10:10:22

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 here02-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+5ms02-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。
  
页: [1]
查看完整版本: SQLite数据库,应用程序没有关闭游标或数据库对象