使用sqldatareader查询数据库没有绑定到dataset上,如何查询的总条数呢?使用RecordsAffected提示没有这个属性,如果把查询语句改为select count(*) as cun,* from huifu where bianhao='0001'
则提示有未包含在聚合函数中的列,请问这个问题怎么解决,谢谢了。

解决方案 »

  1.   

    SqlDataReader.RecordsAffected 属性已更改、插入或删除的行数;如果没有任何行受到影响或语句失败,则为 0;-1 表示 SELECT 语句。直到读取了所有行并关闭 SqlDataReader 时,才会设置 RecordsAffected 属性。该属性的值是累积值。例如,如果以批处理模式插入两个记录,则 RecordsAffected 的值将为二。当 SqlDataReader 关闭后,只能调用 IsClosed 和 RecordsAffected 属性。
      

  2.   

    1. 循环SqlDataReader,取出总条数
    2。 查询时用两个SQL语句,用SqlDataReader.NextResult获取第二个结果
      

  3.   

    select count(*) as cun,* from huifu where bianhao='0001'
    你这条里面改成
    select count(*) as cun from huifu where bianhao='0001'
    试试
      

  4.   

    select count(*) from tablename where condition
      

  5.   

    由于sqlreader都是有command对象查询出来的,而在command对象里面的sqlparameter可以设置传出值,
    reader是以向前游标方式读取数据,因此光用reader不能得道记录数
      

  6.   

    1\、select count(*) as cun from huifu where bianhao='0001'
    2、调用command对象的 ExecuteScalar ,返回一个对象类型,仅表示结果集中第一行第一列的值。需要显式的转换成整形
    3、自己用循环写出来(最差的方法了)
      

  7.   

    不想用循环所以才问有没有其他办法的,
    to:vivianfdlpw()您所说的用两个sql语句实现起来应该怎么做呢,能不能给个例子看看啊,谢谢了。
      

  8.   

    不知道楼主这么做是因为什么?
    你的查询语句就算获取数据总数,也会有大量的冗余 
    每条记录都会有一个记录总数的的字段,
    若楼主坚持这么做的话 ,可以
    把查询语句改为
    select *,(select count(*) from huifu where bianhao='0001') as cun from huifu where bianhao='0001'
    不过最后还是建议楼主用存储过程,用返回值获取记录总数。
      

  9.   

    string connString="server=(local);database=test;trusted_connection=true";
    SqlConnection conn=new SqlConnection (connString);
    conn.Open ();string sql="select * from A select @@rowcount";
    SqlCommand cmd=new SqlCommand (sql,conn);SqlDataReader dr=cmd.ExecuteReader();

    //获取第一个记录集
    while(dr.Read())
    {
        //代码
    }if(dr.NextResult())//下一个记录集
    {
         if(dr.Read())
    {
    Response.Write ("记录数为"+dr[0].ToString());
    }
    }//关闭连接
    dr.Close ();
    conn.Close ();
      

  10.   

    我的老天,调用command对象的 ExecuteScalar 
    这个不就是最好的办法嘛.看一下.net framework1.1开发包中关于ExecuteScalar 
    的这部分.简单的一塌糊涂.