1

当我执行我的应用程序时,我在我的应用程序中使用数据库我显示以下错误

android.database.sqlite.DatabaseObjectNotClosedException:应用程序没有关闭此处打开的游标或数据库对象

请帮助我如何解决这个错误

4

4 回答 4

0

您可以通过将数据库设置为单例来完全避免打开/关闭数据库,这是 Android 中推荐的方法。

当您想跨多个线程访问数据库时,问题只会变得更糟。

查看此问题以获取有关如何保持单个打开数据库Android SQLite DB 何时关闭的示例

虽然这解决了问题,但您仍然需要确保在完成后关闭游标,除非您使用 Loader API 为您处理此问题。

于 2012-10-11T08:02:36.657 回答
0

使用后您没有关闭数据库。因此,您必须使用以下语句关闭数据库。

db.close(); 
于 2012-10-11T07:31:19.380 回答
0

进行事务处理后,您应该始终关闭游标和 Db ..
并记住在出现异常时也要关闭它..

您必须在扩展 SQLite Helper 类的类中实现这样的功能:

@Override
    public synchronized void close() {
        if(db != null){
            db.close();
        super.close();
        }   
    }
于 2012-10-11T07:31:51.277 回答
0

在你的主类中调用这个方法

db.close();

将此方法添加到您的助手类

@Override
    public synchronized void close() {
        if(db != null){
            db.close();
        super.close();
        }   
    }

有关Andorid Sqlite 数据库的更多信息

于 2012-10-11T07:36:28.843 回答