我正在爲android
和ios
開發應用程序。我希望能夠快照一個sqlite
數據庫,並且可以在多次提交後回滾到該快照。一次只需要一個快照。sqlite - 回滾到快照
的數據必須堅持在應用程序重新啓動,所以SAVEPOINT
不是一個選項(只在一個連接中存在)
這可能與sqlite的Android和iOS?如果沒有,是否有數據庫解決方案具有這種能力?
我正在爲android
和ios
開發應用程序。我希望能夠快照一個sqlite
數據庫,並且可以在多次提交後回滾到該快照。一次只需要一個快照。sqlite - 回滾到快照
的數據必須堅持在應用程序重新啓動,所以SAVEPOINT
不是一個選項(只在一個連接中存在)
這可能與sqlite的Android和iOS?如果沒有,是否有數據庫解決方案具有這種能力?
SQLite沒有內置機制來恢復提交的事務。
從理論上講,您可以使用backup API來製作數據庫文件的副本,但實際上,Android框架並不允許您訪問此文件。 如果您可以確保沒有人正在訪問數據庫,則可以手動複製數據庫文件。
如果與整個數據庫的大小相比,更改量較小,那麼記錄所有更改並在需要時手動還原它們可能會更好。 這最好使用觸發器完成;見Automatic Undo/Redo Using SQLite。
您必須設置交易,如果交易成功,您必須提交該交易,否則您必須取消該交易。
下面是示例代碼
開始交易
database.beginTransaction(); /* for start transaction */
數據庫完成操作後,就可以使用
database.setTransactionSuccessful();
database.endTransaction();
但是,如果你給錯誤的交易之間
那麼不設置database.setTransactionSuccessful();
使事務將被回滾。
這就是簡單的步驟。 http://www.sqlite.org/lockingv3.html
爲什麼負面投票解釋 –
既然你說在原來的崗位「因此,許多承諾後」,恐怕你必須指的是SQLite的一個概念(如每 -other SQL數據庫...)最不幸的是不直接支持。您將需要在自己的應用程序中實現「特定應用程序」。
而且,不幸的是,「你必須從這裏拿走它。」 SQL理解由「提交」或「回滾」結束的「原子事務」,但它不瞭解任何內容更多。爲了實現您的目標,您必須深入到IBM曾經稱爲「檢查點/重新啓動」的(特定於應用程序的)領域。但是,這些,最遺憾的是完全「應用程序特定!」
使用Android SQLite事務回滾工具 –