这是我的(粗略)代码(DAL):
int i;
// Some other declarations
SqlCommand myCmdObject = new SqlCommand("some query");
conn.open();
i = myCmdObject.ExecuteNonQuery();
conn.close();
Run Code Online (Sandbox Code Playgroud)
问题是:即使我的SELECT查询中存在记录,i仍然保留值-1.
可能是什么问题呢?
小智 16
每当要执行不应返回值或记录集的SQL语句时,都应使用ExecuteNonQuery.
因此,如果要运行更新,删除或插入语句,则应使用ExecuteNonQuery.ExecuteNonQuery返回受语句影响的行数.这听起来非常好,但是无论何时使用SQL Server 2005 IDE或Visual Studio创建存储过程,它都会添加一条废弃所有内容的小行.
该行是:SET NOCOUNT ON; 此行打开SQL Server的NOCOUNT功能,"停止指示受Transact-SQL语句影响的行数的消息作为结果的一部分返回",因此它使存储过程始终返回-1从应用程序调用(在我的例子中是一个Web应用程序).
总之,从存储过程中删除该行,现在您将获得一个值,该值指示受该语句影响的行数.
编程愉快!
http://aspsoft.blogs.com/jonas/2006/10/executenonquery.html
因为SET NOCOUNT选项设置为on.删除"SET NOCOUNT ON"行 在您的查询或存储过程中.
有关详细信息,请参阅SqlCommand.ExecuteNonQuery()在执行Insert/Update/Delete时返回-1.
| 归档时间: |
|
| 查看次数: |
101859 次 |
| 最近记录: |