日期:2014-05-17  浏览次数:20366 次

请问怎样在Read()集里面连续输出下面5条记录?
请问怎样在Read()集里面连续输出下面5条记录?

strSQL = "select * from tb"; 
OleDbCommand Cmd = new OleDbCommand(strSQL, MyConn);
OleDbDataReader Dr = Cmd.ExecuteReader();
while (Dr.Read())
{
 Response.Write(Dr["文章内容"].ToString()); //循环输出当前记录

//我想在这里,同时读取输出当前记录的下面五条记录的标题,请问怎么实现?
  Response.Write(下一条记录的标题);
  Response.Write(再下一条记录的标题);
  Response.Write(再再下....);
//其实这里才做了一次循环输出,不知我表达清楚了没有
}

没有分了,全部奉上,谢谢大家的帮助。

------解决方案--------------------

select top 5 * from tb

------解决方案--------------------
不知道你这个什么逻辑
------解决方案--------------------
select top 6 * from tb order by Id
------解决方案--------------------
select top 5 * from tb order by id desc
------解决方案--------------------
引用:
可能是我没有表达清楚,我一开始就将全部数据读入到 Dr 里面了,然后用 while (Dr.Read())输出每一篇文章,但是我想在输出当前文章时,同时输出对下来的五条记录的标题,就是,下面一篇文章是什么,再下一篇又是什么。。。。这样的提示。


这是啥逻辑,你所谓的当前文章又是怎么定义的?假如有好几十乃至上百条记录,你的下一篇、下下一篇下面又有好多记录。或者说你的逻辑处理本身就是有问题的!!
------解决方案--------------------
引用:
可能是我没有表达清楚,我一开始就将全部数据读入到 Dr 里面了,然后用 while (Dr.Read())输出每一篇文章,但是我想在输出当前文章时,同时输出对下来的五条记录的标题,就是,下面一篇文章是什么,再下一篇又是什么。。。。这样的提示。


之所以有“分页”概念,就是因为那种“先将数据库表读入内存”的做法出了问题,你才可能听到分页技术的。
------解决方案--------------------
引用:


其实你已经表达清楚了……
只是你应该是个初学者, 所以不太明白——效率。 而以上诸君都是高手, 所以无法理解你的做法。
数据库能做的事情, 最好是数据库先做好, 不要放到C#里来处理——特别是在数据量特别大的时候。 所以一般是需要多少就取多少……

现在明白为什么有人回答你—— "select top 6 * from tb" 了吧?

其实按你的想法, 这样写就可以了。

strSQL = "select * from tb"; //用"select top 6 * from tb"的话下面就不用限制读取的记录条数了
OleDbCommand Cmd = new OleDbCommand(strSQL, MyConn);
OleDbDataReader Dr = Cmd.ExecuteReader();

if(Dr.Read()){
    //首先让你的主记录输出
    Response.Write(Dr["文章内容"].ToString()); //循环输出当前记录

    //输出余下的5条记录
    int recordsCount = 5;  //限定读取的记录条数
    while (Dr.Read())
    {
        Response.Write(下一条记录的标题);
        if(--recordsCount==0){
            break; 
        };
    }
    Dr.Close();
}
—————————————