0

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

很多次我都在调用打开和关闭数据库连接来插入、更新和删除。

它工作正常。

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

如何解决这些问题?

4

2 回答 2

1

好吧,除非您进行适当的异常处理,否则您永远不会知道是什么原因造成的。

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

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

于 2012-09-07T09:39:51.670 回答
1

根据您提供的信息,我可以假设问题出在您的业务逻辑中,没有人,但您应该能够告诉您根本原因。如果没有您的代码,我们将无法为您指明确切的位置。可能的原因之一可能是您的业务逻辑试图在关闭的数据库上执行一些操作(插入、更新任何内容)。

您可以采取一些解决方法来尝试确保您的数据库在需要时始终处于打开状态。如果您使用所谓的惰性初始化方法实现数据库 getter 方法,它至少会保证当您需要访问数据库时数据库是打开的。

这就是我所说的:1.创建一个应该返回数据库对象的公共方法:

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

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

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

于 2012-09-07T10:12:09.223 回答