- 记录<%=i+1%>
- 留言人:<%=aResults(1,i)%>
- 内容:<%=aResults(2,i)%>
- 时间:<%=aResults(3,i)%>
- IP:<%=aResults(5,i)%>
第二天,查了一下网上的资料,突然想到是否可以把所需数据提到一个数组里,然后对数组进行分页呢?首先把set rs=conn.execute(sql)查询出来的结果通过rs.getrows()取出来附给一个数组,于是我就在各网站上找分页的帖子,虽然发现不少高效率分页的帖子(包括存储过程等),可结果发现全都是需要通过SQL执行的,即翻页的时候也需要执行SQL语句,此时头都晕了,优化的也只是SQL语句,此时实在没办法,只好自己努力了!终于完成了一个数组分页的粗稿,代码不是很完善,让大家一起来研究一下!代码如下:
首先有一个index.asp查询页:
以下内容为程序代码: search.asp的代码: <% If request.querystring("act")="cha" Then search_type=request.FORM("ChannelID") keywords=request.form("keyword") if search_type="k1" then '按照留言内容搜索 sql="select * from gbook_rec where g_content like '%"&keywords&"%'" ElseIf search_type="k2" then 'if search_type="k2" then '按照留言人搜索 sql="select * from gbook_rec where g_name like '%"&keywords&"%'" Else response.end end If Set rs=conn.execute(sql) If rs.eof And rs.bof Then %> 没有查找到您要的记录! <% response.End Else aResults=rs.getrows()'取出数据放入数组ROW中 application("data")=aResults Set rs=nothing conn.close '关闭数据库 End IF End If aResults=application("data") Dim i,row,pagesize,epage,numb,pagecount,fenye numb=UBound(aResults,2)+1 '总记录行数 pagesize=2 '每页条数 If numb Mod pagesize = 0 Then '判断总页数 pagecount=Int(numb/pagesize) Else pagecount=Int(numb/pagesize)+1 End If epage=request.querystring("page") If epage="" Then epage=1 For i=(epage-1)*pagesize To epage*pagesize-1 If i>UBound(aResults,2) Or i<0 Then Exit for %>
<% Next If numb>pagesize Then fenye="首页 " fenye=fenye&"前页 " fenye=fenye&"后页 " fenye=fenye&"末页 " fenye=fenye&" fenye=fenye&"总页数"&pagecount&",当前页"&epage&",总记录为:"&numb response.write fenye End if %> |
总结:本人认为以上代码除了初次查询需要连接到数据库外,其他时间都不需要连接数据库,对于大型数据查询或连接人数比较多的时候对资源节省还是很有用处理的!另外将查询数组保存在application对象上,还可以根据application( "data")("username")来判断某人查询过什么,不过此代码为初次模型,还有待今后大家一起努力改进!希望大家都顶力关注支持,谢谢!