ExecuteNonQuery doesn't return results

后端 未结 9 1841
迷失自我
迷失自我 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:06

    From MSDN: SqlCommand.ExecuteNonQuery Method

    You can use the ExecuteNonQuery to perform catalog operations (for example, querying the structure of a database or creating database objects such as tables), or to change the data in a database without using a DataSet by executing UPDATE, INSERT, or DELETE statements.

    Although the ExecuteNonQuery returns no rows, any output parameters or return values mapped to parameters are populated with data.

    For UPDATE, INSERT, and DELETE statements, the return value is the number of rows affected by the command. When a trigger exists on a table being inserted or updated, the return value includes the number of rows affected by both the insert or update operation and the number of rows affected by the trigger or triggers. For all other types of statements, the return value is -1. If a rollback occurs, the return value is also -1.

    You are using SELECT query, thus you get -1

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

    If what you want is to get just a single integer from the query, use:

    myCmdObject.ExecuteScalar()
    
    0 讨论(0)
  • 2020-11-28 11:11

    Could you post the exact query? The ExecuteNonQuery method returns the @@ROWCOUNT Sql Server variable what ever it is after the last query has executed is what the ExecuteNonQuery method returns.

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

    You use EXECUTENONQUERY() for INSERT,UPDATE and DELETE.

    But for SELECT you must use EXECUTEREADER().........

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

    What kind of query do you perform? Using ExecuteNonQuery is intended for UPDATE, INSERT and DELETE queries. As per the documentation:

    For UPDATE, INSERT, and DELETE statements, the return value is the number of rows affected by the command. When a trigger exists on a table being inserted or updated, the return value includes the number of rows affected by both the insert or update operation and the number of rows affected by the trigger or triggers. For all other types of statements, the return value is -1.

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

    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.

    How to Set Count On

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