ExecuteNonQuery不返回结果

时间:2011-03-18 07:17:52

标签: c# asp.net

这是我的(粗略)代码(DAL):

int i;
// Some other declarations

SqlCommand myCmdObject = new SqlCommand("some query");

conn.open();
i = myCmdObject.ExecuteNonQuery();
conn.close();

问题是:即使我的SELECT查询中有记录,i中的值仍为-1

可能是什么问题?

9 个答案:

答案 0 :(得分:46)

您执行什么类型的查询?使用ExecuteNonQuery适用于UPDATEINSERTDELETE查询。根据{{​​3}}:

  

用于UPDATE,INSERT和DELETE   语句,返回值是   受影响的行数   命令。当a上存在触发器时   正在插入或更新的表,   返回值包括数量   受插入或插入影响的行   更新操作和数量   受触发器影响的行或   触发。对于所有其他类型的   语句,返回值为-1。

答案 1 :(得分:14)

每当您想要执行不应返回值或记录集的SQL语句时,应使用ExecuteNonQuery。

因此,如果要运行更新,删除或插入语句,则应使用ExecuteNonQuery。 ExecuteNonQuery返回受语句影响的行数。这听起来很不错,但是无论何时使用SQL Server 2005 IDE或Visual Studio创建存储过程,它都会添加一条破坏所有内容的小行。

该行是:SET NOCOUNT ON;此行打开SQL Server的NOCOUNT功能,其中"停止指示受Transact-SQL语句影响的行数的消息作为结果的一部分返回"因此,当从应用程序调用时(在我的情况下是Web应用程序),它使存储过程始终返回-1。

总之,从存储过程中删除该行,现在您将获得一个值,该值指示受该语句影响的行数。

快乐的节目!

http://aspsoft.blogs.com/jonas/2006/10/executenonquery.html

答案 2 :(得分:7)

您对EXECUTENONQUERY()INSERTUPDATE使用DELETE

但对于SELECT,您必须使用EXECUTEREADER() .........

答案 3 :(得分:6)

因为SET NOCOUNT选项设置为on。删除“SET NOCOUNT ON”行在您的查询或存储过程中。

SqlCommand.ExecuteNonQuery() returns -1 when doing Insert / Update / Delete 了解详情。

答案 4 :(得分:1)

你能发布确切的查询吗? ExecuteNonQuery方法返回@@ROWCOUNT Sql Server变量,在最后一个查询执行之后,它就是ExecuteNonQuery方法返回的内容。

答案 5 :(得分:1)

如果你想要的只是从查询中获得一个整数,请使用:

myCmdObject.ExecuteScalar()

答案 6 :(得分:1)

ExecuteNonQuery方法用于查询的SQL语句,例如INSERTUPDATE,...您想要使用{{ 1}}或ExecuteScalar如果您希望您的语句返回结果(即查询)。

答案 7 :(得分:0)

来自MSDN:SqlCommand.ExecuteNonQuery Method

  

您可以使用ExecuteNonQuery   执行目录操作(for   例如,查询a的结构   数据库或创建数据库对象   如表),或改变数据   在不使用DataSet的数据库中   通过执行UPDATE,INSERT或DELETE   语句。

     

虽然ExecuteNonQuery返回   没有行,任何输出参数或   映射到参数的返回值是   填充数据。

     

用于UPDATE,INSERT和DELETE   语句,返回值是   受影响的行数   命令。当a上存在触发器时   正在插入或更新的表,   返回值包括数量   受插入或插入影响的行   更新操作和数量   受触发器影响的行或   触发。 适用于所有其他类型的   语句,返回值为-1 。如果   发生回滚,返回值为   也-1。

您正在使用SELECT查询,因此您获得-1

答案 8 :(得分:0)

  

如果你想运行更新,删除,   或者插入语句,你应该使用   ExecuteNonQuery。的ExecuteNonQuery   返回受影响的行数   声明。

How to Set Count On

相关问题