【发布时间】:2013-09-26 17:09:18
【问题描述】:
我正在尝试从数据库中删除某些内容,然后插入一个新值。我对数据库知之甚少,因此希望就这里出了什么问题提出建议。
我不断收到以下错误:
Caused by: java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase:
它从异步任务调用,第一次工作正常,但第二次触发任务时中断。
这里是重要的sn-ps:
public void removeAndInsert(String configRaw) {
SQLiteDatabase sqlite = null;
try {
sqlite = dbHelper.getWritableDatabase();
removeAndInsert(configRaw, sqlite);
.....
finally {
if (sqlite != null) {
sqlite.close();
}
}
void removeAndInsert(String configRaw, SQLiteDatabase sqlite) throws SQLException {
ContentValues initialValues = new ContentValues();
initialValues.put(DBOpenHelper.CONFIG_CACHE_RAW_DATA, configRaw);
sqlite.delete(DBOpenHelper.CONFIG_CACHE_TABLE_NAME, null, null);
sqlite.insert(DBOpenHelper.CONFIG_CACHE_TABLE_NAME, null, initialValues);
}
【问题讨论】:
-
这部分代码看起来不错,您是否在代码中的其他地方关闭?例如你的 dbHelper 类?
-
好的,我发现了问题,似乎应用程序中的其他地方正在另一个线程上打开和关闭数据库!
-
@serenskye 请编辑您的问题(或发布答案)以包含您的解决方案的详细信息。