小编典典

设置NOCOUNT ON并使用C#和ADO.NET阅读消息

sql

SET NOCOUNT ON停止显示消息,该消息显示受Transact-SQL语句或存储过程影响的行数作为结果集的一部分返回。

a)如何使用C#和ADO.NET读取这些消息(我假设读取这些消息的C#代码是相同的,而不管T-SQL语句是在存储过程中,批处理中执行还是在代码中执行?)

b)假设存储过程包含多个语句,那么您的C#代码如何识别特定消息所引用的SQL语句?

谢谢


阅读 168

收藏
2021-04-14

共1个答案

小编典典

信息消息(如受影响的行计数信息)通过SqlConnection.InfoMessage事件在ADO.Net中报告。将委托添加到事件中,并且每当服务器传输参考消息(即,严重性低于10的任何错误消息)时,都将调用该委托。

没有办法将受影响的计数信息之类的信息性消息与源相关联。您将必须根据逻辑知识进行操作,并了解第一条消息是指第一次更新,第二条消息是指第二次更新,依此类推。

通常,依靠客户端中受影响的行数是一种不好的做法。启用S​​ET NOCOUNT
ON时,ORM层(例如NHibernate和ADO.Net数据集)会遇到许多问题,这恰恰说明了这种做法的问题性。

2021-04-14