2010-11-01 131 views
8

我正在嘗試將我的應用程序從確認模型調整爲撤消模型。對於那些不瞭解的人,這是你可以通過一次點擊刪除某些內容的地方,但如果這是一個錯誤,你可以輕鬆地將其撤銷,而不是每次他/她想要做某事時中斷用戶問煩人的「你確定你想......嗎?」問題通過對話框。如何對SQLite數據庫更改實現單步撤消?

我的應用程序由Android SQLite數據庫支持,我希望能夠撤消有限的一組刪除和更新操作。另外,我只需要能夠撤消一個連續的更改,並且信息不必長時間地擱置。

我在undo/redo上讀取的所有內容都表示使用命令模型存儲數據。我的問題是如何以輕量級可恢復的方式存儲數據庫更改?

+0

我想你希望更改能夠被其他查詢看到,即使它們仍然可以被撤消? – 2010-11-01 14:36:01

+0

@ Space_C0wb0y這些更改需要保存並且非易失性,以便其他查詢可以讀取它們,但我需要能夠完全撤消上一個事務。 – CodeFusionMobile 2010-11-01 15:08:48

回答

3

命令模式的概念是,每個命令都知道它是如何撤消的。例如,AddPersonCommand會在數據庫中向Persons -table添加新記錄。要撤銷此命令,您必須再次刪除該人員。

根據應用程序的類型和數據庫的複雜性,您可以像往常一樣將更改寫入數據庫。您始終保留最後的X個命令對象(X是可以撤消的操作的數量),並且如果有必要,請調用它們的方法undo-方法。

1

您還可以使用RestorableSQLiteDatabase庫,它是圍繞Android的SQLiteDatabase的包裝,並自動生成恢復SQL查詢來撤消使用標​​簽名稱的變化。