基于C#中的类SqlCommand对象调用SQLServer存储过程时,存储过程执行成功,但是对象方法ExecuteNonQuery()返回-1

问题如题。

【下面是一个例子】

1、存储过程完成的功能是:插入insert一条记录,相同主键的记录存在时执行更新update的操作。存储过程正常执行的返回值是1.(不过本文提到的问题和这个返回值没关系。)

2、在另一个.cs文件中使用 SqlCommand对象 调用方法ExecuteNonQuery(),获取操作影响的行数。


【现象】

正常应该返回大于0的数,但是返回值却是 -1.


【解决】

存储过程中,多了一条语句:SET NOCOUNT ON; 

该语句阻止存储过程返回信息中包含受影响行数的信息,以提高性能。

去掉该语句,标题提到的问题就解决了。


【备注】

这个问题比较low,只是被它坑了一小时,这里mark一下。关于SET NOCOUNT ON;的含义,可以参考:http://www.cnblogs.com/lmfeng/archive/2011/10/12/2208821.html

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页