不知为什么?在C#2005里写的这段查询语句得到的查询返回值始终为 -1public bool ExecSql(string sql)
{
  OpenCon();
  bllo flag = flase;
  SqlCommand cmd = con.CreateCommand();
  cmd.CommandType = CommandType.Text;
  int i = cmd.ExecuteNonQuery();
  if(i>0)
  {
    flag = true;
  }
  CloseCon();
  return flag;
}Sql 语句无论写什么查到的返回值 i 总是为 -1,是哪里错了呢?
麻烦大家帮我看看吧。

解决方案 »

  1.   

    您可以使用 ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行 UPDATE、INSERT 或 DELETE 语句,在不使用 DataSet 的情况下更改数据库中的数据。虽然 ExecuteNonQuery 不返回任何行,但映射到参数的任何输出参数或返回值都会用数据进行填充。对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1。
      

  2.   

    SqlConnection conn=new SqlConnection("connectionstr");
    SqlCommand cmd=new SqlCommand("select or insert or update",conn);
    cmd.Connection.Open();
    int i = cmd.ExecuteNonQuery(); 
      if(i> 0) 
      { 
        flag = true; 
      } 
      

  3.   

    另外 你的程序没有把sql扶植给cmd。。public bool ExecSql(string sql) 

      OpenCon(); 
      bllo flag = flase; 
      SqlCommand cmd = con.CreateCommand(); 
      cmd.CommandType = CommandType.Text;
    cmd.CommandText=sql; 
      int i = cmd.ExecuteNonQuery(); 
      if(i> 0) 
      { 
        flag = true; 
      } 
      CloseCon(); 
      return flag; 
      

  4.   


    那这样的话我怎么样才能取到查询到多少行数据啊?我现在就是想得知我所输入的SQL语句有没有找到相应的记录,应该如何写?
      

  5.   

    cmd.CommandText = ""(SQL语句)没写``