string connstr="workstation id=RAND2;packet size=4096;user id=sa;data source=RAND2;persist security info=False;initial catalog=C";
string findstr="select * from person where [name]='"+ txtSerch.Text +"'";
SqlConnection conn;
conn=new SqlConnection(connstr);
conn.Open(); SqlCommand cmd;
cmd=new SqlCommand (findstr,conn);

SqlDataReader myReader;
myReader=cmd.ExecuteReader ();问题是:
myReader.Read()之后,能不能像ADO.recordset那样有一个ado.recordset.recordset 属性,取得当前记录集里记录的条数?之

解决方案 »

  1.   

    不能,若要那种效果,可以使用dataset(用dataadpater的fill填充)
      

  2.   

    想得到行数,用dataset
    dataset.tables[0].rows.count
    dataset是用dataadpater的fill填充的
    具体语法参见msdn
      

  3.   

    不是吧?
    用下面的while结构能把我查询到的记录一条条显示出来,但是共有多少条记录我不用管.
    但如果改为for 结构呢?我一定要知道循环的终值才行,这个终值就是记录的条数,条数真的无法取得吗?
    while(myReader.Read())
    {
        console.writeline (myReader[0].tostring());
    }
      

  4.   

    int i=0
    while(myReader.Read())
    {
        console.writeline (myReader[0].tostring());
        i++;
    }
    最后i就是行数
      

  5.   

    哈哈~~这样我也想到了.看来它没有一个方法直接取得行数,我是ADO用习惯了,因为ADO.recordset.recordcount 可以取得记录集的条数.这个没有不太习惯.
    谢谢各位, 以后用DATASET
      

  6.   

    不好意思我看错你的问题了
    取记录数没有直接的办法,ado也只有在使用 客户端游标 或者 服务器端游标并调用MoveLast后才能取得记录数
      

  7.   

    在存储过程中加个输出参数来得到记录总数,SELECT @Count = COUNT(*) FROM table1select col1,col2 from table1go