2010-11-01 130 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查询来撤消使用标​​签名称的变化。