以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于SQLCOMMAND的事务执行失败的回滚  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=189939)

--  作者:kensou11111
--  发布时间:2024/1/5 16:29:00
--  [求助]关于SQLCOMMAND的事务执行失败的回滚
以帮助中的例子为例,请问如果事务执行出错回滚了,代码中的2句removefor还会执行吗?

其实我是想知道假如我有后续的代码需要根据事务执行是否成功来操作的,应该怎么写(例如事务执行成功则 A=1,执行失败则 A=0)




图片点击可在新窗口打开查看此主题相关图片如下:搜狗截图20240105162756.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2024/1/5 16:36:00
--  
事务是针对SQLcommand执行的sql的,和datatable没有任何关系。

有没有执行,要看代码在哪里出错。如果代码在执行第一个removefor前出错,那就不会执行到,如果是执行最后一个removefor出错,那么第一个removefor肯定执行成功了

--  作者:kensou11111
--  发布时间:2024/1/5 16:44:00
--  
那么假如我有后续的代码需要根据事务执行是否成功来操作的,应该怎么写(例如事务执行成功则 A=1,执行失败则 A=0)
--  作者:有点蓝
--  发布时间:2024/1/5 17:06:00
--  
Try
    Connections("数据源").BeginTransaction() 
\'开始事务
    Dim cmd As new 
SQLCommand
    cmd.ConnectionName = 
"数据源"
    cmd.CommandText = 
"Delete From {订单} Where [订单编号] = 32"
    cmd.
ExecuteNonQuery
    cmd.CommandText = 
"Delete From {订单明细} Where [订单编号] = 32"
    cmd.
ExecuteNonQuery
    Connections("数据源").Commit 
\'提交事务,所有操作生效
能够执行到这里肯定成功了
 A=1
Catch
 ex As Exception \'如果出错
    Connections("数据源").Rollback() 
\'回滚事务,撤销所有操作
能够执行到这里肯定失败了
A=0
End
 Try

--  作者:kensou11111
--  发布时间:2024/1/5 17:09:00
--  
好的,谢谢