В течение нескольких дней я сталкиваюсь со странным исключением:
IllegalStateException : database not opened.
На самом деле я обновляю базы данных из нескольких потоков, поэтому, возможно, я обновляю данные после закрытия.Поэтому, пожалуйста, скажите, как применить механизм блокировки и разблокировки для базы данных sqlite.
Здесь одна из функций базы данных.Пожалуйста, скажите мне, что-то не так.
if(cBookmark != null && !checkIfBookmarkExists(cBookmark)){
SQLiteDatabase sqLiteDatabase = null;
try{
sqLiteDatabase = mDatabaseHelper.getWritableDatabase();
SQLiteStatement sqLiteStatement = sqLiteDatabase.compileStatement(
"insert into chart_bookmark ( "+
"package_id , chart_id , chart_title , offset_x, offset_y, zoomlevel )"+
"Values( ?,?,?,?,?,?)");
synchronized(sqLiteStatement){
sqLiteStatement.bindString(1, cBookmark.getPackage_id());
sqLiteStatement.bindString(2,cBookmark.getChart_id());
sqLiteStatement.bindString(3, cBookmark.getChartTitle());
sqLiteStatement.bindString(4, cBookmark.getOffsetX());
sqLiteStatement.bindString(5,cBookmark.getOffsetY());
sqLiteStatement.bindLong(6,cBookmark.getZoomlevel());
Log.v(TAG, ""+cBookmark.getChart_id()+cBookmark.getChartTitle()+
cBookmark.getOffsetX()+cBookmark.getOffsetY());
sqLiteStatement.execute();
sqLiteStatement.close();
}
}finally{
sqLiteDatabase.releaseReference();
}
}