1
從幾天,我面臨着怪異的例外是,如何在android中鎖定多個線程的數據庫?
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();
}
}