Welcome 微信登录

首页 / 数据库 / MySQL / SQLite抛出错误“未关闭游标及数据库对象”特殊原因一例

Html代码
  1. Android 2.3.3   
  2. Eclipse Version: 3.7.0   
  3. LogCat  
LogCat 报错信息:
  1. 02-13 13:29:32.830: WARN/ActivityManager(62): Launch timeout has expired, giving up wake lock!     
  2. 02-13 13:29:33.381: DEBUG/dalvikvm(17173): GC_CONCURRENT freed 771K, 57% free 2908K/6727K, external 2013K/2137K, paused 7ms+5ms     
  3. 02-13 13:29:33.630: DEBUG/dalvikvm(17173): GC_FOR_MALLOC freed 867K, 58% free 2836K/6727K, external 2013K/2137K, paused 178ms     
  4. 02-13 13:29:33.859: ERROR/Database(17173): close() was never explicitly called on database "/data/data/com.tmall.nokia/databases/taobaoNokia.db"    
  5. 02-13 13:29:33.859: ERROR/Database(17173): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here   
  6. 02-13 13:29:33.859: ERROR/Database(17173): at android.database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1847)   
  7. 02-13 13:29:33.859: ERROR/Database(17173): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)   
  8. 02-13 13:29:33.859: ERROR/Database(17173): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:854)   
  9. 02-13 13:29:33.859: ERROR/Database(17173): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:847)   
  10. 02-13 13:29:33.859: ERROR/Database(17173): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:544)   
  11. 02-13 13:29:33.859: ERROR/Database(17173): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)   
  12. 02-13 13:29:33.859: ERROR/Database(17173): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)   
  13. 02-13 13:29:33.859: ERROR/Database(17173): at com.tmall.nokia.db.RecordDBHelper.query(RecordDBHelper.java:49)   
  14. 02-13 13:29:33.859: ERROR/Database(17173): at com.tmall.nokia.manage.RecordDBopt.get(RecordDBopt.java:78)   
  15. 02-13 13:29:33.859: ERROR/Database(17173): at com.tmall.nokia.manage.RecordMessage.sendMseeage(RecordMessage.java:111)   
  16. 02-13 13:29:33.859: ERROR/Database(17173): at com.tmall.nokia.manage.RecordMessage.sendMseeage(RecordMessage.java:87)   
  17. 02-13 13:29:33.859: ERROR/Database(17173): at com.tmall.nokia.Report.run(Report.java:49)   
  18. 02-13 13:29:33.859: ERROR/Database(17173): at java.lang.Thread.run(Thread.java:1019)   
  19. 02-13 13:29:33.830: WARN/ActivityManager(62): Launch timeout has expired, giving up wake lock!   
  20. 02-13 13:29:34.381: DEBUG/dalvikvm(17173): GC_CONCURRENT freed 771K, 57% free 2908K/6727K, external 2013K/2137K, paused 7ms+5ms   
  21. 02-13 13:29:34.630: DEBUG/dalvikvm(17173): GC_FOR_MALLOC freed 867K, 58% free 2836K/6727K, external 2013K/2137K, paused 178ms  
发生错误原因分析:主要错误:02-13 13:29:33.859: ERROR/Database(17173): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here  出错处代码SQLiteDatabase db = getWritableDatabase();  意思是指在此处打开数据库操作之前,应用程序没有关闭游标或数据库对象。在应用中,对数据库操作完成后,应该对游标及数据库进行关闭操作
  1. if (!cur.isClosed()) {   
  2.     cur.close();   
  3. }   
  4. db.close();   
检查操作数据库的相关源代码,确认在退出前关闭了游标及数据库对象。那还抛出未关闭的错误是怎么回事呢?继续检查发现,抛出此错误之前,在操作数据库过程中还抛出了另外的一个错误。原来在抛出第一个错误以后,关闭操作未执行,导致再次操作数据库时抛出“应用程序没有关闭游标或数据库对象”的错误。解决办法:检查数据库操作部分代码,在抛出错误处理部分,关闭游标及数据库对象(cursor or database object)新一代的数据库审计解决方案--Oracle数据库操作SQLite数据库报错:“绑定或列的索引超出范围”相关资讯      sqlite 
  • Ubuntu 16.04 安装可视化数据库浏  (05月20日)
  • iOS 数据库比较:SQLite vs. Core   (03月01日)
  • 如何在 Ubuntu 15.04 上安装带   (02月09日)
  • 微软推荐通用 Windows 应用开发者  (05月04日)
  • SQLite 3.11.0 发布下载  (02月17日)
  • SQLite 3.10.2 发布下载  (01月29日)
本文评论 查看全部评论 (0)
表情: 姓名: 字数