2016-07-06 48 views
1

我正在爲androidios開發應用程序。我希望能夠快照一個sqlite數據庫,並且可以在多次提交後回滾到該快照。一次只需要一個快照。sqlite - 回滾到快照

數據必須堅持在應用程序重新啓動,所以SAVEPOINT不是一個選項(只在一個連接中存在)

這可能與sqlite的Android和iOS?如果沒有,是否有數據庫解決方案具有這種能力?

+0

使用Android SQLite事務回滾工具 –

回答

1

SQLite沒有內置機制來恢復提交的事務。

從理論上講,您可以使用backup API來製作數據庫文件的副本,但實際上,Android框架並不允許您訪問此文件。 如果您可以確保沒有人正在訪問數據庫,則可以手動複製數據庫文件。

如果與整個數據庫的大小相比,更改量較小,那麼記錄所有更改並在需要時手動還原它們可能會更好。 這最好使用觸發器完成;見Automatic Undo/Redo Using SQLite

-1

您必須設置交易,如果交易成功,您必須提交該交易,否則您必須取消該交易。

下面

是示例代碼

開始交易

database.beginTransaction(); /* for start transaction */ 

數據庫完成操作後,就可以使用

database.setTransactionSuccessful();  
database.endTransaction(); 

但是,如果你給錯誤的交易之間

那麼不設置database.setTransactionSuccessful();使事務將被回滾。

這就是簡單的步驟。 http://www.sqlite.org/lockingv3.html

+0

爲什麼負面投票解釋 –

1

既然你說在原來的崗位「因此,許多承諾後」,恐怕你必須指的是SQLite的一個概念(如 -other SQL數據庫...)最不幸的是不直接支持。您將需要在自己的應用程序中實現「特定應用程序」

而且,不幸的是,「你必須從這裏拿走它。」 SQL理解由「提交」或「回滾」結束的「原子事務」,但它不瞭解任何內容更多。爲了實現您的目標,您必須深入到IBM曾經稱爲「檢查點/重新啓動」的(特定於應用程序的)領域。但是,這些,最遺憾的是完全「應用程序特定!」