您的位置:首页 > 数据库

FAQ_21 sqlite exception: close() was never explicitly called on database

2012-06-13 00:25 387 查看
经常与数据库打交道的 frend 们,估计肯定遇到这样的错误提示:

close() was never explicitly called on database ××××××××××××××××××

这种错误提示,不会导致程序崩溃,至少我没有遇到。

这个错误来源:

framworks/base/core/java/android/database/sqlite/SQLiteDatabase.java

@Override
protected void finalize() {
if (isOpen()) {
Log.e(TAG, "close() was never explicitly called on database '" +
mPath + "' ", mStackTrace);
closeClosable();
onAllReferencesReleased();
}
}


我的代码报了这个错误,我感觉很郁闷,因为我的确是 close 了!!

             DatabaseHelper dbHelper = new DatabaseHelper(context);
             SQLiteDatabase db = dbHelper.getWritableDatabase();

              if (db != null && db.isOpen()) {
                  db.close();
              }

             if (dbHelper != null) {
               dbHelper.close();
             }

最后发现,在代码里面,有:

if(isDate) {
//************
return;
}

所以须将 close 放到这个判断的 return 之前一份,因为 isDate == true,进入这个语句,程序就不会往下执行,那麽还没有 close,就会包错。

这样就没有错误了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐