请问怎样在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语句来限制。