请问怎样在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();
}
—————————————