首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2013-11-27 
请问怎样在Read()集里面连续输出下面5条记录?请问怎样在Read()集里面连续输出下面5条记录?strSQL selec

请问怎样在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();
}
——————————————————————————————————————
当然, 你如果有兴趣, 可以再思考一下: 其实你的做法也并不是效率低到无可救药。
因为 DataReader 并不是 DataTable , 不是内存数据库, 只是个只读只进的读取器, 一次也只能读取一行记录, 所以即使SQL语句获取的记录数量再庞大, 但最终取的数量还是非常少的——有些人甚至用DataReader做分页!

当然, DataReader 限制取数据的数量并不是效率最高的办法, 最好还是用SQL语句来限制。

热点排行