建议看一下具体介绍ADO.net的书,DataReader只允许前移,可以考虑其他方法实现

解决方案 »

  1.   

    datareader是只向前的,它绝不会后退
      

  2.   

    再执行一次Command..ExecuteReader();
    就可以移回到文件的最前面了。
      

  3.   

    执行Command.ExecuteReader();好象不行啊我是想做一个分页显示内容的程序,先用datareader循环读取,得到循环的数字就是内容的条数,然后在循环读第几条到第几条,为该页的显示内容,但是我在第二次读取的时候就读不到什么了,这样我该怎么办呢?下面是代码:
    con.Open();
    SqlDataReader dr=cmd.ExecuteReader();
    while (dr.Read())
    {
        allrecord++;
    }
    dr.Close();
    con.Close();

    if(allrecord==0)
    {
       Response.Write("当前没有留言");
    }
    if(allrecord%pagesize==0)
    {
     allpage=allrecord/pagesize;
    }
    else
    {
     allpage=allrecord/pagesize+1;
    }
    int temp=(nowpage-1)*pagesize;
    int temp1=temp+pagesize+1;
    string showtitle="<table>";

    con.Open();
    dr= cmd.ExecuteReader();
    while (dr.Read())
    {
     int i=0;
      i++;
    if(i>temp&&i<temp1)
    {
    showtitle+="<tr><td><li><a href='"+dr["url"]+"' target='_blank'>"+dr["title"].ToString()+"</a></td></tr>";
    }}
    dr.Close();
    con.Close();
    showtitle+="</table>";
    Label1.Text=showtitle;
      

  4.   

    用datareader循环读取,得到循环的数字就是内容的条数
    这样一来是不是太浪费拉,没有人这样做的你可以用查询来得到一数值,就是你的记录总数
      

  5.   

    con.Open();
    SqlDataReader dr=cmd.ExecuteReader();
    while (dr.Read())
    {
        allrecord++;
    }
    dr.Close();
    con.Close();
    改一下
    con.Open();
    allrecord=Convert.ToInt32(cmd.ExecuteScalar());
    dr.Close();
    con.Close();
      

  6.   


    con.Open();
    SqlCommand cmd = new SqlCommand("select count(*) from Authors", con);
    allrecord=Convert.ToInt32(cmd.ExecuteScalar());
    dr.Close();
    con.Close();简单的写拉一个主要是利用cmd的方法ExecuteScalar得到一个数
      

  7.   

    http://chs.gotdotnet.com/quickstart/aspplus/