1
我的應用程序插入一些數據到它的SQLite數據庫和應用程序確認插入是成功的。 但是,如果稍後斷電,數據在移動設備完全重新啓動後不可見。數據寫入sqlite數據庫如果電源丟失寫後不久
似乎有一些緩存正在進行 - 我怎樣才能'沖洗'緩衝區/緩存?
注意:sqlite數據庫位於主閃存中,而不是在SD卡上。
我的應用程序插入一些數據到它的SQLite數據庫和應用程序確認插入是成功的。 但是,如果稍後斷電,數據在移動設備完全重新啓動後不可見。數據寫入sqlite數據庫如果電源丟失寫後不久
似乎有一些緩存正在進行 - 我怎樣才能'沖洗'緩衝區/緩存?
注意:sqlite數據庫位於主閃存中,而不是在SD卡上。
喜有人的地方,
如果要保證一個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時,行爲完成並且該項目應該提交給數據庫。您應該在調用此事務後立即終止事務,因爲即使在設置事務成功和結束事務之間發生錯誤,它仍會提交到數據庫。
希望這可以幫助你! 乾杯。
我試過了,它仍然沒有完全寫出來;移動設備重新啓動後,我關閉了數據庫並使用「SQLite數據庫瀏覽器」進行了檢查 - 該數據庫顯示了我的數據。但是,如果我使用Android的「sqlite3」來檢查表,數據就會丟失。看起來「SQLite數據庫瀏覽器」有點寬容 - 但如果Android的sqlite3不考慮數據被寫入,那對我來說沒有任何幫助。 –
我懷疑獲得寫入數據(緩存刷新)的唯一方法是執行另一次寫入,也許是寫入不需要的數據,但我還不確定。 –