加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

FAQ_21 sqlite exception: close() was never explicitly called

发布时间:2020-12-12 20:30:35 所属栏目:百科 来源:网络整理
导读:经常与数据库打交道的 frend 们,估计肯定遇到这样的错误提示: close() was never explicitly called on database ×××××××××××××××××× 这种错误提示,不会导致程序崩溃,至少我没有遇到。 这个错误来源: framworks/base/core/java/andro

经常与数据库打交道的 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,就会包错。


这样就没有错误了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读