我用以下代码查询符合条件的记录数,可以得到的结果一直是“-1”请问是怎么回事 要用什么函数才可以?            comm.Open();
            SqlCommand number = new SqlCommand("select * from [mainpcb] where [sn]='" + textBox3.Text + "'", comm);
            int i = Convert.ToInt32(number.ExecuteNonQuery());
            textBox5.Text=i.ToString();
            comm.Close();

解决方案 »

  1.   

    是ExecuteScalar()函数
    comm.Open();
    SqlCommand number = new SqlCommand("select count(*) from [mainpcb] where [sn]='" + textBox3.Text + "'", comm);
     int i = Convert.ToInt32(number.ExecuteScalar());
    textBox5.Text=i.ToString();
     comm.Close();
      

  2.   

    SqlCommand number = new SqlCommand("select count(*) from [mainpcb] where [sn]='" + textBox3.Text + "'", comm);
    int i = (int)number.ExecuteScalar();另外,如果不用 count sql 文,那么用 ExecuteReader() 或者 DataAdapter.Fill()
    查询数据集的条数。
      

  3.   


    ExecuteReader()   有直接获取行数的方法吗 ? 不会要用while循环吧?
      

  4.   


    你不是已经加where条件了嘛?这样的话,取得的就是符合条件的记录总数啊?有什么不对的??
      

  5.   


    SqlDataAdapter da= new SqlDataAdapter(Sql, Conn);
    DataSet ds= new DataSet();
    myDataAapter.Fill(ds);
    return ds;
    //返回DataSet数据集
      

  6.   

                SqlDataAdapter number = new SqlDataAdapter("select * from [mainpcb] where [id]='" + textBox3.Text + "'", comm);
                DataSet numbe = new DataSet();
                number.Fill(numbe);
                textBox5.Text = numbe.ToString();
    得到的结果是:System.Data.DataSet   请再指教一下
      

  7.   

    number.ExecuteNonQuery());
    用 ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行 UPDATE、INSERT 或 DELETE 语句,在不使用 DataSet 的情况下更改数据库中的数据。
    虽然 ExecuteNonQuery 不返回任何行,但映射到参数的任何输出参数或返回值都会用数据进行填充。
    对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。如果正在执行插入或更新操作的表上存在触发器,则返回值包括受插入或更新操作影响的行数以及受一个或多个触发器影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1。number.ExecuteScalar()的SQL中用了 select count(*)得到的第一行第一列的值就是 符合条件的记录数DataSet number= new DataSet();
     number.Fill(numbe);
    使用时, number.Rows.Count 就是 符合条件的记录数
      

  8.   

      textBox5.Text = numbe.Tables[0].Rows.Count.ToString();