在ExecuteScalar中使用两个查询时,任何查询失败的可能性

时间:2011-05-31 10:25:06

标签: c# asp.net sql executescalar

我编写了一个查询,它是一个复合查询,就像一个更新查询和一个插入查询。 我正在使用ExecuteScalar。 是否有可能一个查询失败而另一个查询将成功。 如果其中一个查询错误,那将是一个完整的失败或部分失败。

有人可以帮助:)

2 个答案:

答案 0 :(得分:3)

无论如何你调用它;对于复合操作,完全有可能第一个操作将成功,第二个操作将失败(例如,唯一键冲突或外键冲突)。如果你需要确保全部或全部,那么用事务将Execute*的呼叫包围起来,只有当你知道它全部有用时才提交。

您还可以在SQL级别创建事务,但如果您在TSQL中执行此操作,则可以使用的工具更容易出错。为了给予应有的信任,它确实避免了一些往返 - 但通常不是那么多,以至于值得与语言作斗争。最终,SQL是为良好的基于​​集合的DML操作而设计的 - 它在执行流程管理等更多过程代码方面并不是那么好。

答案 1 :(得分:0)

是的,您的一个查询失败并且其他执行失败。为什么不使用ExecuteNonQuery而不是ExecuteScalar。您可以更好地为这些类型的场景使用“交易”