广

ASP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    ASP教程:不连数据库进行查询分页的思路

    2018-04-03 21:36:31 次阅读 稿源:互联网
    零七广告

    看了不少介绍,知道set rs=conn.execute(sql)的执行效率比rs.open sql,conn,1,1要高很多,但是set rs=conn.execute(sql)这种执行方式也有很多不足,首先它不具有分页属性,比如rs.pagesize,rs,absolutepage等属性,这样的话,通过这种方式set rs=conn.execute(sql)执行的速度虽然快了,但是却不能按普通方式进行分页,怎么办呢??

    第二天,查了一下网上的资料,突然想到是否可以把所需数据提到一个数组里,然后对数组进行分页呢?首先把set rs=conn.execute(sql)查询出来的结果通过rs.getrows()取出来附给一个数组,于是我就在各网站上找分页的帖子,虽然发现不少高效率分页的帖子(包括存储过程等),可结果发现全都是需要通过SQL执行的,即翻页的时候也需要执行SQL语句,此时头都晕了,优化的也只是SQL语句,此时实在没办法,只好自己努力了!终于完成了一个数组分页的粗稿,代码不是很完善,让大家一起来研究一下!代码如下:
    首先有一个index.asp查询页:

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    </head>

    <body><FORM id="SearchForm" name="SearchForm" method="post" action="search.asp?act=cha">
    <div class=input>
    <input id=keyword onmouseover=this.focus() title="快速搜索您的留言记录" onfocus=this.select() class="in"maxlength=35 name=keyword />
    <select style="width:120px;margin-top:-25px" name="ChannelID">
    <option value="k2">留言人</option>
    <option value="k1">留言内容</option>
    </select>
    <Input id=search_btn type=submit value="查询">
    </div>
    </FORM>
    </body>
    </html>
    search.asp的代码:

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    </head>
    <body>
    <%
    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)
    Ifrs.eof And rs.bof Then
    %>
    <div class="search">没有查找到您要的记录!</div>
    <%
    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
    %>
    <div class="content">
    <ul><li>记录<%=i+1%></li>
    <li>留言人:<%=aResults(1,i)%></li>
    <li>内容:<%=aResults(2,i)%></li>
    <li>时间:<%=aResults(3,i)%></li>
    <li>IP:<%=aResults(5,i)%></li>
    </ul>
    </div>
    <%
    Next
    If numb>pagesize Then
    fenye="<a href=search.asp?page=1>首页</a>"
    fenye=fenye&"<a href=search.asp?page="&epage-1&" title="&epage-1&">前页</a>"
    fenye=fenye&"<a href=search.asp?page="&epage+1&" title="&epage+1&">后页</a>"
    fenye=fenye&"<a href=search.asp?page="&pagecount&">末页</a>"
    fenye=fenye&"<BR>"
    fenye=fenye&"总页数"&pagecount&",当前页"&epage&",总记录为:"&numb
    response.write fenye
    End if
    %>
    </body>
    </html>

    总结:本人认为以上代码除了初次查询需要连接到数据库外,其他时间都不需要连接数据库,对于大型数据查询或连接人数比较多的时候对资源节省还是很有用处理的!另外将查询数组保存在application对象上,还可以根据application( "data")("username")来判断某人查询过什么,不过此代码为初次模型,还有待今后大家一起努力改进!希望大家都顶力关注支持,谢谢!

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告