+-
Android:打开和关闭SQLite数据库
我正在开发和我经常使用的 android应用程序访问本地数据库.可以从不同的专家那里访问该数据库,因此我对数据库有一个协调问题.我使用以下open()和close()方法.

public void open(){ 
    mDb=mDbHelper.getWritableDatabase();
}

public void close(){
        mDb.close();
}

因此,通常,当我需要访问数据库进行某些操作时,我打开数据库,然后执行一些操作,最后关闭数据库.我通常用于此目的的代码如下:

    try {
        dbManager.open();
                    // database operation
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally{
        try {
            dbManager.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

但是,如果从不同线程(假定线程A和线程B)使用这段代码,则可能会发生以下情况:

A thread: performs open()
B thread: perfroms open()
A thread: perfroms some operation
A thread: performs close()
B thread: try to perform some operation but it fails!

因此,我能猜到的唯一解决方案是在应用程序启动时执行open(),在应用程序停止时执行close().我不确定这是否是一个好的解决方案?

实际上,getWritableDatabase()方法的文档(从我的open()调用)说:

Make sure to call close() when you no longer need the database

因此,有人可以建议我替代解决方案吗?

最佳答案
您可以使用单调实例,并且通常不能关闭数据库(但保持事务关闭).有一些信息:

Android SQLite DB When to Close

点击查看更多相关文章

转载注明原文:Android:打开和关闭SQLite数据库 - 乐贴网