我又来问问题了.关于数据库撤消操作问题
现在要做一个UNDO 和REDO 功能按钮
主要就是就操作数据库在于返回前进等....
比如:
1.我用其他的按钮插入一条数据后,点UNDO,能再把这条数据删除,再点REDO, 又把此条数据插入,
2.我删除了10数据,点UNDO,能把这十条数据恢复,再点REDO数据库就保持原样.
UNDO 和REDO 至少各保留5步,换句话说就是能返回前程次的操作!!!
给思路即可!!!!少量的关键代码,谢谢!
[解决办法]
把数据保存在数组,把数组保存在链表。
剩下的就是INTER和DELETE了
[解决办法]
UNDO 和 REDO 实际上是采用备份的方法。最简单的方式就是采用 5 个临时表或临时库。
[解决办法]
用两个表,一个表保存与操作相反的sql语句,即如果是插入:即保存delete语句,如果是delete就保存insert语句,如果是update,就保存update以前的值的sql语句。在undo时调用该表的sql语句。
另一个表保存与操作相同的sql语句。在redo是执行该表的sql语句。
[解决办法]
1、未“Save”之前,先不用与数据库交互,直接将数据以XML文件格式临时记录在当前目录的Temp下。
2、“Save”之后,将数据存储至数据库。
3、程序退出时将XML文件删除。
//这样做的目的在于尽量减少与数据库的交互,而且在做“UNDO”操作时,直接在本地调用XML的数据,无论是速度还是效率总好过从远程数据库中去取数,甚至还可以做成PHOTOSHOP中的“历史”面板那样的效果--》直接恢复到某一步。
[解决办法]
有没有这个必要?对数据库有改动的操作有很多,建表、修改字段、建视图、建触发器等等。这些操作如何记录?
如果把要求放简单一点,只是对表的增、删、改的话,而且全部操作都是通过纯SQL实现的话,可以这么考虑,每产生一个SQL语句,就智能产生一个“反”SQL语句,比如,生成:
insert into T(c1, c2, c3, c4)VALUES(v1, v2, v3, v4)
假设其中c1、c2是PK的话可以生成“反”SQL语句:
delete T where c1=v1 and c2 = v2
把SQL语句和“反”SQL语句都记录下来,就可以实现UNDO REDO了。
当然建表、修改字段这些操作上也应该可以通过生成“反”SQL语句来实现UNDO。这就看开发人员的SQL熟练程度了,反正让我做的话没把握,呵呵。
[解决办法]
先挂上,看不懂。。。