返回的是受影响的行数
比如Insert成功的话返回1
Update成功的话返回更新了多少行
Delete成功的话返回删除了多少行

解决方案 »

  1.   

    但如果发送的是select语句..貌似返回的是-1   = =!
      

  2.   

    一般不要通过ExecuteNonQuery的返回值来决定什么,因为这个返回值是"不准确"的,
    ExecuteNonQuery的返回值的意义是在所执行的所有Sql命令的最后一条Sql所造成的对数据库的记录影响的条数.而不代表所有操作是否影响了多少条.要正确的使用ExecuteNonQuery的返回值,可以考虑用Parameter返回值,或保证所执行的Sql命令只有一条会影响记录条数.
      

  3.   

    对于Command对象来说它可以一次执行多个Sql语句,或执行一个存储过程尤其是存储过程,我们可能不知道它里面有几个Sql语句执行了.我们只知道ExecuteNonQuery方法的返回值是对最后一个执行的Sql语句所影响的记录数.比如:
    string sql = "delete table1 where name like '%a%';delete table2 where name like '%b%'";delete table1 where name like '%a%'; //假如有5条被删除
    delete table2 where name like '%b%'; //假如有1条被删除
    那么这样的两个语句执行后返回的会是最后一个执行的结果1而不知道上一个的结果5;
      

  4.   

    恩..这个明白了!还有就是..你提到那个Parameter要怎么用呢?
      

  5.   

    比如:SqlParameter par = new SqlParameter("@RetValue");
    par.SqlDbType = SqlDbType.Bit;
    par.Direction = ParameterDirection.Output;//或ParameterDirection.ReturnValue等
    sqlcommand.Parameters.Add(par);
    sqlcommand.ExecuteNonQuery();
    if (object.Equals(par.Value, true))
    {
        //返回了True,执行成功
    }
    else
    {
        //执行不成功
    }