Android 2.3.3
Eclipse Version: 3.7.0
LogCat
LogCat 报错信息:
02-13 13:29:32.830: WARN/ActivityManager(62): Launch timeout has expired, giving up wake lock!
02-13 13:29:33.381: DEBUG/dalvikvm(17173): GC_CONCURRENT freed 771K, 57% free 2908K/6727K, external 2013K/2137K, paused 7ms+5ms
02-13 13:29:33.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): close() was never explicitly called on database '/data/data/com.tmall.nokia/databases/taobaoNokia.db'
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
02-13 13:29:33.859: ERROR/Database(17173): at android.database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1847)
02-13 13:29:33.859: ERROR/Database(17173): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
02-13 13:29:33.859: ERROR/Database(17173): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:854)
02-13 13:29:33.859: ERROR/Database(17173): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:847)
02-13 13:29:33.859: ERROR/Database(17173): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:544)
02-13 13:29:33.859: ERROR/Database(17173): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
02-13 13:29:33.859: ERROR/Database(17173): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)
02-13 13:29:33.859: ERROR/Database(17173): at com.tmall.nokia.db.RecordDBHelper.query(RecordDBHelper.java:49)
02-13 13:29:33.859: ERROR/Database(17173): at com.tmall.nokia.manage.RecordDBopt.get(RecordDBopt.java:78)
02-13 13:29:33.859: ERROR/Database(17173): at com.tmall.nokia.manage.RecordMessage.sendMseeage(RecordMessage.java:111)
02-13 13:29:33.859: ERROR/Database(17173): at com.tmall.nokia.manage.RecordMessage.sendMseeage(RecordMessage.java:87)
02-13 13:29:33.859: ERROR/Database(17173): at com.tmall.nokia.Report.run(Report.java:49)
02-13 13:29:33.859: ERROR/Database(17173): at java.lang.Thread.run(Thread.java:1019)
02-13 13:29:33.830: WARN/ActivityManager(62): Launch timeout has expired, giving up wake lock!
02-13 13:29:34.381: DEBUG/dalvikvm(17173): GC_CONCURRENT freed 771K, 57% free 2908K/6727K, external 2013K/2137K, paused 7ms+5ms
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();
意思是指在此处打开数据库操作之前,应用程序没有关闭游标或数据库对象。
在应用中,对数据库操作完成后,应该对游标及数据库进行关闭操作
if (!cur.isClosed()) {
cur.close();
}
db.close();
检查操作数据库的相关源代码,确认在退出前关闭了游标及数据库对象。
那还抛出未关闭的错误是怎么回事呢?继续检查发现,抛出此错误之前,在操作数据库过程中还抛出了另外的一个错误。
原来在抛出第一个错误以后,关闭操作未执行,导致再次操作数据库时抛出“应用程序没有关闭游标或数据库对象”的错误。
解决办法:
检查数据库操作部分代码,在抛出错误处理部分,关闭游标及数据库对象(cursor or database object)
分享到:
相关推荐
Android 数据库SQLite 详解,简单学好SQLite
Delphi使用SQLite3,包括本地数据库和内存数据库,本地数据库加载到内存,内存数据库备份到本地,使用sqlite simple delphi包装类。
Qt中SQlite数据库加密SqliteCipher 操作实例,打开多个数据库,附着数据库跨库查询, 对应说明:https://blog.csdn.net/woguanni/article/details/120524602
SQlite数据库工具 供比较两个SQLite数据库所用。
一个小时内学习 SQLite 数据库
SQLite数据库加密解密小工具,只用于.Net中使用SQLite时的加密和加密
数据库sqlite 小型数据库数据库sqlite
通过相关配置,删除数据后,实现SQLite3设置数据库文件自动收缩
在学习的过程中遇到了配置问题是主要的,能得找bug找了大半天,但是还是坚持的心态把问题给解决了,比如需要哪几个文件,需要sqlite3.dll、sqlite3.lib、sqlite3i.h、sqlite3.hDbsqlite.h、Dbsqlite.cpp这些都是已经...
SQLite是目前最流行的开源嵌入式数据库,和很多其他嵌入式存储引擎相比(NoSQL),如BerkeleyDB、MemBASE等,SQLite可以很好的支持关系型数据库所具备的一些基本特征,如标准SQL语法、事务、数据表和索引等。...
QT自带的Sqlite引擎是不支持加密的,所以自己实现了能够加密的Sqlite引擎,继承QSqlDriver实现的,与其他数据库一样使用QSqlDatabase进行操作,与QT自带数据库操作保持一致。文件包含项目源码及测试代码。
php读取SQLite数据库, php读取SQLite数据库,php读取SQLite数据库
控件:UniDAC(仅使用此了一种三方控件) 附件:SQLite3.dll 功能: 1.用纯脚本创建一个带密码的SQLite3数据库(默认文件名db.db,密码123) 2.用纯脚本创建一个表,并打开,可在Dbgrid中修改 3.修改SQLite3数据库的密码 ...
lua修改和查看数据库必须的so库,x86和arm的都有
SQLite.Interop.dll 32和64位文件,配合SQLite Expert Professional 4.2可以打开加密数据库。 将SQLite.Interop.dll拷贝到SQLite Expert安装路径,然后打开SQLite Expert,Tools --> Options --> SQLite Library中...
DB Browser for SQLite(DB4S) 是一个高质量、可视化、开源的工具,用于创建、设计和编辑与SQLite兼容的数据库文件。 为想要创建、搜索和编辑数据库的用户和开发人员而设计的。DB Browser for SQLite(DB4S) 使用一个...
Sqlite数据库学习总结,希望能有帮助
Windows SQLite 创建数据库 方法
SQLite(创建数据库)
Android中数据存储--采用SQLite存储数据及在SDCard中创建数据库源码 http://blog.csdn.net/cjjky/article/details/6578393