lijingf117 2012-10-10 17:03
浏览 398
已采纳

Android数据库错误,db或者游标没有关闭,如果没有关闭,如何强制关闭呢

一般都没有问题,有时候会出现这个错误,猜想是不是程序异常结束的时候,db或者游标没有被关闭。
当再启动app的时候,通过下面这句取得数据库的时候,出现了下面的错误信息:
DatabaseOpenHelper.getWritableDatabase();

求解决方案:
加入上面的取得方法出错,捕捉错误然后先把没有关闭的先关闭了,再打开数据库。-》》如何解决呢??

10-09 19:24:41.269: E/Database(1269): close() was never explicitly called on database '/data/data/com.android.providers.media/databases/external-47cd50a6.db'
10-09 19:24:41.269: E/Database(1269): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
10-09 19:24:41.269: E/Database(1269): at android.database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1847)
10-09 19:24:41.269: E/Database(1269): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
10-09 19:24:41.269: E/Database(1269): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:854)
10-09 19:24:41.269: E/Database(1269): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:847)
10-09 19:24:41.269: E/Database(1269): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:576)
10-09 19:24:41.269: E/Database(1269): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)
10-09 19:24:41.269: E/Database(1269): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:187)
10-09 19:24:41.269: E/Database(1269): at com.android.providers.media.MediaProvider.query(MediaProvider.java:1451)
10-09 19:24:41.269: E/Database(1269): at com.android.providers.media.MediaProvider.attachVolume(MediaProvider.java:3880)
10-09 19:24:41.269: E/Database(1269): at com.android.providers.media.MediaProvider.insertInternal(MediaProvider.java:2317)
10-09 19:24:41.269: E/Database(1269): at com.android.providers.media.MediaProvider.insert(MediaProvider.java:1909)
10-09 19:24:41.269: E/Database(1269): at android.content.ContentProvider$Transport.insert(ContentProvider.java:198)
10-09 19:24:41.269: E/Database(1269): at android.content.ContentResolver.insert(ContentResolver.java:604)
10-09 19:24:41.269: E/Database(1269): at com.android.providers.media.MediaScannerService.openDatabase(MediaScannerService.java:65)
10-09 19:24:41.269: E/Database(1269): at com.android.providers.media.MediaScannerService.scanFile(MediaScannerService.java:217)
10-09 19:24:41.269: E/Database(1269): at com.android.providers.media.MediaScannerService.access$100(MediaScannerService.java:53)
10-09 19:24:41.269: E/Database(1269): at com.android.providers.media.MediaScannerService$ServiceHandler.handleMessage(MediaScannerService.java:282)
10-09 19:24:41.269: E/Database(1269): at android.os.Handler.dispatchMessage(Handler.java:99)
10-09 19:24:41.269: E/Database(1269): at android.os.Looper.loop(Looper.java:123)

  • 写回答

2条回答 默认 最新

  • iteye_15176 2012-10-11 15:40
    关注

    对于Android中的SQLite数据库,我一般采用的方法是,随用随取随关。
    进行DAO操作时,首先获取一个SQLiteDatabase对象,具体代码采用try{}finally{}的格式。确保有任何问题,数据库对象都被关闭。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)