android中的DatabaseObjectNotClosedException?

时间:2012-10-11 07:26:51

标签: android

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

  

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

请帮我解决这个错误

4 个答案:

答案 0 :(得分:0)

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

db.close(); 

答案 1 :(得分:0)

你应该总是关闭光标& Db做交易后..
并且在发生异常时请记得关闭它。

你必须在你的类中实现这样的扩展SQLite Helper类:

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

答案 2 :(得分:0)

你的mainclass中的

调用这个方法

db.close();

将此方法添加到helperclass

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

有关Andorid Sqlite Database

的更多信息

答案 3 :(得分:0)

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

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

查看此问题,了解如何保留单个开放数据库Android SQLite DB When to Close

的示例

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