以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  用函数执行事务保存数据的疑问  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=160216)

--  作者:happyft
--  发布时间:2021/1/25 8:34:00
--  用函数执行事务保存数据的疑问
Dim SqlList As List(of String) = Args(0)  \'传入需要执行的sql语句
Dim cmd As new SQLCommand
cmd.ConnectionName = Mydata
Try
    cmd.BeginTransaction() \'开始事务
    For Each sql As String In SqlList
        cmd.CommandText = sql
        cmd.ExecuteNonQuery()
    Next
    
    cmd.Commit()  \'提交事务
    sqlList.Clear()  \'清空集合
Catch ex As Exception
    cmd.Rollback()  \'回滚事务
    msgbox(ex.tostring)      \'返回错误信息
    sqlList.Clear()  \'清空集合
End Try
表单修改后将所的insert,update,delete等sql语句分别加入到一个集合中通过 上面的函数统一遍历执行保存,
比如有5条语句,前面3条执行正常,每4条执行出错了,这种情况下前面3条已执行的数据好象不会回滚,
有没有办法实现只要有一条sql语句执行出错,都可以全部回滚?

谢谢!

--  作者:有点蓝
--  发布时间:2021/1/25 8:48:00
--  
我测试没有问题,是全部回滚的。请上传实例说明