以帮助中的例子为例,请问如果事务执行出错回滚了,代码中的2句removefor还会执行吗?
其实我是想知道假如我有后续的代码需要根据事务执行是否成功来操作的,应该怎么写(例如事务执行成功则 A=1,执行失败则 A=0)
此主题相关图片如下:搜狗截图20240105162756.png
事务是针对SQLcommand执行的sql的,和datatable没有任何关系。
有没有执行,要看代码在哪里出错。如果代码在执行第一个removefor前出错,那就不会执行到,如果是执行最后一个removefor出错,那么第一个removefor肯定执行成功了
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