SQLite数据库,应用程序没有关闭游标或数据库对象
2012-02-13 13:28
369 查看
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。
相关文章推荐
- android.database.sqlite.databaseobjectnotclosedexception:应用程序没有关闭的光标或数据库对象
- android.database.sqlite.databaseobjectnotclosedexception:应用程序没有关闭的光标或数据库对象
- sql2005 数据库没有完全关闭,无法重新生成日志
- 此数据库没有有效所有者,因此无法安装数据库关系图支持对象
- sqlserver2005"此数据库没有有效所有者,因此无法安装数据库关系图支持对象"的解决方法
- 异常:数据库没有有效所有者,因此无法安装数据库关系图支持对象
- Windows8[Web应用程序项目***已配置为使用IIS。无法访问IIS元数据库,您没有足够的特权访问计算机上的IIS网站]
- ibatis 读取数据库数据,没有查询到,则返回的java对象为null
- 此数据库没有有效所有者,因此无法安装数据库关系图支持对象,解决方案
- 【Oracle】记一次数据库连接没有关闭导致数据库宕机的排查过程
- VC访问数据库程序 在编译器中执行正确 debug文件时无法访问数据库 提示“对象关闭时,无法访问数据库”
- sql2005 数据库没有完全关闭,无法重新生成日志
- JAVA程序,SESSION没有关闭导致数据库异常
- Windows8[Web应用程序项目***已配置为使用IIS。无法访问IIS元数据库,您没有足够的特权访问计算机上的IIS网站]
- 异常:此数据库没有有效所有者,因此无法安装数据库关系图支持对象。
- sql2005 数据库没有完全关闭,无法重新生成日志
- sql2000备份的数据库还原到sql2005后,选择“数据库关系图”提示:此数据库没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使用“数据库属性”对话框的“文件”页或 Alter AUTHORIZATION 语句将数据库
- 此数据库没有有效所有者,因此无法安装数据库关系图支持对象……
- 此数据库没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使用“数据库属性”对话框的“文件”页或ALTER AUTHORIZATION语句将数据库所有者设置为有效登录名,然后再添加数据库关系图支持对象
- KBase数据库,出现“没有导入任何对象,该对象可能已经存在”。