2012-10-04 41 views
1

我的應用程序插入一些數據到它的SQLite數據庫和應用程序確認插入是成功的。 但是,如果稍後斷電,數據在移動設備完全重新啓動後不可見。數據寫入sqlite數據庫如果電源丟失寫後不久

似乎有一些緩存正在進行 - 我怎樣才能'沖洗'緩衝區/緩存?

注意:sqlite數據庫位於主閃存中,而不是在SD卡上。

回答

1

喜有人的地方,

如果要保證一個DB寫入時,你應該使用交易。

ie:這是一個簡單的例子,你可以建立。

DatabaseHelper readDB = new DatabaseHelper(Context); 
SQLiteDatabase db = readDB.getWritableDatabase(); 

String lastConnID = "1"; 
String DATABASE_TABLE = "TestDB"; 
String KEY_ROWID = "pkey"; 

db.beginTransaction(); 
db.update(DATABASE_TABLE, values, KEY_ROWID + "=" 
        + "'" + lastConnID + "'", null); 
db.setTransactionSuccessful(); 
db.endTransaction(); 

可以找到DatabaseHelperClass示例here

當您調用setTransactionSuccessful時,行爲完成並且該項目應該提交給數據庫。您應該在調用此事務後立即終止事務,因爲即使在設置事務成功和結束事務之間發生錯誤,它仍會提交到數據庫。

希望這可以幫助你! 乾杯。

+0

我試過了,它仍然沒有完全寫出來;移動設備重新啓動後,我關閉了數據庫並使用「SQLite數據庫瀏覽器」進行了檢查 - 該數據庫顯示了我的數據。但是,如果我使用Android的「sqlite3」來檢查表,數據就會丟失。看起來「SQLite數據庫瀏覽器」有點寬容 - 但如果Android的sqlite3不考慮數據被寫入,那對我來說沒有任何幫助。 –

+0

我懷疑獲得寫入數據(緩存刷新)的唯一方法是執行另一次寫入,也許是寫入不需要的數據,但我還不確定。 –