您的位置:首页 > 产品设计 > UI/UE

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

2015-11-25 16:44 1081 查看
问题如题。

【下面是一个例子】

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: