【发布时间】:2011-05-31 10:25:05
【问题描述】:
我编写了一个查询,它是一个复合查询,例如一个更新查询和一个插入查询。 我正在使用 ExecuteScalar。 是否有可能一个查询失败而另一个查询成功。 如果其中一个查询错误,则将是全部失败或部分失败。
有人可以帮忙:)
【问题讨论】:
-
你可以使用 ExecuteNonQuery
标签: c# asp.net sql executescalar
我编写了一个查询,它是一个复合查询,例如一个更新查询和一个插入查询。 我正在使用 ExecuteScalar。 是否有可能一个查询失败而另一个查询成功。 如果其中一个查询错误,则将是全部失败或部分失败。
有人可以帮忙:)
【问题讨论】:
标签: c# asp.net sql executescalar
无论您如何调用它;对于复合操作,完全有可能第一个操作成功而第二个操作失败(例如,唯一键违规或外键违规)。如果您需要确保全有或全无,请在对 Execute* 的调用中加上一个事务,并且仅在您知道一切正常时才提交。
您也可以在 SQL 级别创建事务,但如果您在 TSQL 中执行,您可以使用的工具更容易出错。它确实,为了给予应有的荣誉,避免了几次往返——但通常没有那么多,值得为语言而战。归根结底,SQL 是为良好的基于集合的 DML 操作而设计的——它在执行流管理等程序化代码方面并不那么好。
【讨论】:
是的,您的一个查询可能会失败而其他查询会执行。以及为什么不使用 ExecuteNonQuery 而不是 ExecuteScalar。对于这些类型的场景,最好使用“事务”
【讨论】: