<span style="font-size:18px;">
</span>
android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5)
上面的问题,是因为每次创建SQLiteOpenHelper对象时,实际上也是在新建一个数据库连接。如果通过多个连接同时对数据库进行写数据操作,则一定会失败。为确保多线程能安全地操作数据库,则需要保证只有一个数据库连接被占用。
<span style="font-size:18px;">
</span>
java.lang.IllegalStateException:attempt to re-open an already-closed object: SQLiteDatabase
既然只有一个数据库连接,不同的线程会取得一样的SQLiteDatabase对象实例。当线程1尝试管理数据库连接时,线程2却仍然在使用该数据库连接。这就导致了上面问题的原因。因此我们只能在确保数据库没有被占用的情况下,才去关闭它。
DatabaseManager:
<