ExecuteNonQuery doesn't return results

后端 未结 9 1842
迷失自我
迷失自我 2020-11-28 10:46

This is my (rough) code (DAL):

int i;
// Some other declarations

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

conn.open();
i = myCmdObject.Exec         


        
相关标签:
9条回答
  • 2020-11-28 11:22

    The ExecuteNonQuery method is used for SQL statements that are not queries, such as INSERT, UPDATE, ... You want to use ExecuteScalar or ExecuteReader if you expect your statement to return results (i.e. a query).

    0 讨论(0)
  • 2020-11-28 11:24

    Because the SET NOCOUNT option is set to on. Remove the line "SET NOCOUNT ON;" in your query or stored procedure.

    See more at SqlCommand.ExecuteNonQuery() returns -1 when doing Insert / Update / Delete.

    0 讨论(0)
  • 2020-11-28 11:32

    Whenever you want to execute an SQL statement that shouldn't return a value or a record set, the ExecuteNonQuery should be used.

    So if you want to run an update, delete, or insert statement, you should use the ExecuteNonQuery. ExecuteNonQuery returns the number of rows affected by the statement. This sounds very nice, but whenever you use the SQL Server 2005 IDE or Visual Studio to create a stored procedure it adds a small line that ruins everything.

    That line is: SET NOCOUNT ON; This line turns on the NOCOUNT feature of SQL Server, which "Stops the message indicating the number of rows affected by a Transact-SQL statement from being returned as part of the results" and therefore it makes the stored procedure always to return -1 when called from the application (in my case a web application).

    In conclusion, remove that line from your stored procedure, and you will now get a value indicating the number of rows affected by the statement.

    Happy programming!

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

    0 讨论(0)
提交回复
热议问题