我正在实现一个与数据库相关的应用程序。
很多次我都在调用打开和关闭数据库连接来插入、更新和删除。
它工作正常。
但有时我会在不同的情况下得到一个数据库未打开的异常。
如何解决这些问题?
根据您提供的信息,我可以假设问题出在您的业务逻辑中,没有人,但您应该能够告诉您根本原因。如果没有您的代码,我们将无法为您指明确切的位置。可能的原因之一可能是您的业务逻辑试图在关闭的数据库上执行一些操作(插入、更新任何内容)。
您可以采取一些解决方法来尝试确保您的数据库在需要时始终处于打开状态。如果您使用所谓的惰性初始化方法实现数据库 getter 方法,它至少会保证当您需要访问数据库时数据库是打开的。
这就是我所说的:1.创建一个应该返回数据库对象的公共方法:
public SQLiteDatabase getDB() {
if ((mDataBase == null) || (!mDataBase.isOpen())) {
// create or open your database using an OpenHelper
mDataBase = SQLiteOpenHelper.getWritableDatabase();
}
return mDataBase;
}
现在,代码中的任何地方都使用此方法来访问数据库,而不是直接访问变量 mDataBase。
请注意,代码只是为了给您一个想法,而不是实际可编译的。尽管如此,我还是建议您修复您的业务逻辑,而不是使用此解决方法。