如何检查在SqlTransactions期间运行的各个SqlCommands以查看它们是否会运行?

时间:2010-06-15 18:07:46

标签: c# ado.net transactions

我一直在阅读SqlTransactions,并发现了很多例子: http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=451

问题是,当我执行BeginTransaction()(执行所有命令)然后在最后执行Commit()时,我执行的所有命令都会运行,并且会跳过带有语法错误或其他错误的命令。这是我也想要回滚的地方,而不是跳过它们。我发现了一些关于这个主题的文章,但它们并没有很大帮助,纯粹是在SQL中。

有没有办法找出其中一个ExecuteNonQuery()在提交之前是否失败而不是只是跳过?感谢。

1 个答案:

答案 0 :(得分:0)

你错了。

  1. 执行命令时执行命令。他们只是不立即做出改变。
  2. 有错误的命令不会“跳过”。他们在执行时抛出异常。
  3. 如果你正在做的事情,你不会在抛出异常时执行提交,并且事务将回滚。

    你引用的例子说明了这一点。见第36行。