如何过来数据库没有打开异常?

时间:2012-09-07 07:41:38

标签: android sqlite

我正在实施一个与数据库相关的应用程序。

我多次调用open和close数据库连接来插入,更新和删除。

工作正常。

但有时我在不同的情况下得到一个数据库没有打开异常。

如何解决这些问题?

2 个答案:

答案 0 :(得分:1)

除非你进行适当的异常处理,否则你永远不知道是什么导致这种情况。

然而,一个好主意是采用适用于Android的SQL Light的良好ORM映射器,这将改善您的数据库交互和异常处理,并有效地打开和关闭它。

如果您愿意,可以选择SUGARORMLight;在我看来,这应该可以帮助您解决问题。

答案 1 :(得分:1)

根据您提供的信息,我可以假设问题出在您的业务逻辑中,除了您应该能够告诉您根本原因之外没有人。 如果没有您的代码,我们将无法将您指向确切的位置。 其中一个可能的原因可能是您的业务逻辑尝试在已关闭的数据库上执行某些操作(插入,更新等)。

您可以采取一些解决方法,以确保在需要时始终打开数据库。如果使用所谓的延迟初始化方法实现数据库getter方法,它至少可以保证在需要访问它时数据库是打开的。

以下是我所说的: 1.创建一个应该返回DB对象的公共方法:

public SQLiteDatabase getDB() {
    if ((mDataBase == null) || (!mDataBase.isOpen())) {
        // create or open your database using an OpenHelper
        mDataBase = SQLiteOpenHelper.getWritableDatabase();
    }
    return mDataBase;
}

现在,代码中的每个地方都使用此方法来访问数据库,而不是直接访问变量mDataBase。

请注意,代码只是为了给您一个想法,而不是实际可编译。 不过,我建议您修复业务逻辑,而不是使用此解决方法。