【问题标题】:ExecuteNonQuery() returns -1 alwaysExecuteNonQuery() 总是返回 -1
【发布时间】:2011-12-09 07:05:03
【问题描述】:

我正在使用存储过程在表中插入一些值。

CREATE PROCEDURE [dbo].[Sp_InsertValue]
@Val1 as nvarchar(50)
@Val2 as nvarchar(50)
as
BEGIN
    IF NOT EXISTS(SELECT * FROM @mytable WHERE ID=@Val1)
    INSERT INTO @mytable VALUES(@VAL2)
END

我正在使用 ExecuteNonQuery() 使用 C# 在 ASP.NET 中调用此存储过程。它工作正常,没有问题,如果它们不存在,它会插入值。问题是 cmd.ExecuteNonQuery() 总是返回-1。我希望如果插入一条记录,它应该返回 1,否则返回 0,对吧?

【问题讨论】:

  • 当您在 sql server 查询窗口中执行此过程时,您可以在结果窗格中看到任何记录更新消息吗?并尝试返回受将其添加到过程最后一行影响的行 - Return @@Rowcount

标签: c# asp.net executenonquery


【解决方案1】:

检查您的存储过程中没有“SET NOCOUNT ON”。这将停止返回影响行的数量。从字面上看,“NoCount”是开启的。

在这种情况下,默认响应将始终为“-1”。

【讨论】:

  • SET NOCOUNT ON 是我的罪魁祸首。非常感谢您指出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-28
  • 1970-01-01
  • 2011-12-28
  • 2017-01-20
  • 2013-02-07
相关资源
最近更新 更多