none
如何获得SqlDataReader取得的记录行数 RRS feed

  • 问题

  •  

    执行的是select的操作。

     

    我写一个方法,用

    int i = 0;
    while (dr.Read())
    i += 1;

    这样的方法取得个数后,dr似乎将指针移到了最后一条记录之后,无法再用这个dr做别的事情,我觉得很奇怪的事情是,设一个中间变量reader1去做上面的计数,也会使我要使用的reader无法正常工作。

     

    请问有什么方法再把dr的指针移回到第一条记录去。

     

    或者有什么方法更快的取得这个dr的记录数更好了。

    2008年8月13日 7:39

答案

  •  

    SqlDataReader 是单向只读的  ,不能回到第一条记录 。

     

    你只能判断有没有数据,不能直接得到行数 。

    如果必须 ,可用 select count(*) 找数据库直接取。

     

    SqlDataReader 未关闭前 会占用连接,读出数据后马上关闭。

     

    看你的意图 应该使用dataset  。

    2008年8月13日 8:27
  • 你好!
        由于SqlDataReader类的实例是一次读取一条记录,所以没有提供用来获取行数的属性,一旦读取完毕dr的指针就不能一会第一条记录了,SqlDataReader没有提供相应的方法。
        希望以上回答对你有帮助!
    2008年8月13日 8:34
    版主
  • 请使用DataSet.Tables["tablename"].Rows.Count方法
    或者执行2次查询
    2008年8月13日 9:07
    版主

全部回复

  •  

    SqlDataReader 是单向只读的  ,不能回到第一条记录 。

     

    你只能判断有没有数据,不能直接得到行数 。

    如果必须 ,可用 select count(*) 找数据库直接取。

     

    SqlDataReader 未关闭前 会占用连接,读出数据后马上关闭。

     

    看你的意图 应该使用dataset  。

    2008年8月13日 8:27
  • 你好!
        由于SqlDataReader类的实例是一次读取一条记录,所以没有提供用来获取行数的属性,一旦读取完毕dr的指针就不能一会第一条记录了,SqlDataReader没有提供相应的方法。
        希望以上回答对你有帮助!
    2008年8月13日 8:34
    版主
  • 请使用DataSet.Tables["tablename"].Rows.Count方法
    或者执行2次查询
    2008年8月13日 9:07
    版主
  •  

    呵呵,谢谢孟子,没想到CSDN挂了却在这看到你
    2008年8月13日 9:12
  • 尝试在编写查询语句是添加查询字段count(query line)然后 在sr.read()的时候,用sr[i].tostring()避开该字段;
    2014年8月11日 3:16