VB操作SQL2000数据库回滚问题
利用VB编写了几个窗体,每个窗体都有一个SQL插入语句,为了保证A、B、C过程数据的一致性,事务回滚代码如何写呢?要写在什么位置?一个函数中的事务回滚我会写,多个不同窗体下的SQL事务回滚如何写呢?代码示例如下:
Function A()
{
......
txtSQL = "insert into TableA"
Set mrc = ExecuteSQL(txtSQL, MsgText)
......
call B()
......
}
End A
......
......
Function B()
{
......
txtSQL = "insert into TableB"
Set mrc = ExecuteSQL(txtSQL, MsgText)
......
call C()
......
}
End B
......
......
Function C()
{
......
txtSQL = "insert into TableC"
Set mrc = ExecuteSQL(txtSQL, MsgText)
......
}
End C VB 是可以的,但是,各个操作的协调是比较麻烦的
定义全局的cnt对象,并启动事务
你必须为每个窗口的sql设置一个成功标志,每个窗口的执行结果记录到对应的标志
必须设置一个提交按键,检查各个窗口是否提交成功,如果是,则执行CommitTrans
如果有一个失败,执行RollBackTrans
我感觉一件事情放到几个地方去做不是一个聪明的做法!
你可以在不同窗口准备好数据,将数据汇总到一个中心点,在该处执行事务处理,或者搞一个提交函数,该函数从各个窗口提取数据,然后执行事务
事务处理写到数据库的存储过程中。
补充:VB , 非技术类