ASP教程:不連數(shù)據(jù)庫進(jìn)行查詢分頁的思路_ASP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:ASP技術(shù)與PHP,CGI,JSP等技術(shù)的比較
      目前,最常用的三種動(dòng)態(tài)網(wǎng)頁語言有ASP(Active Server Pages),JSP(JavaServer Pages),PHP (Hypertext Preprocessor)。 簡 介 ASP全名Active Server Pages,是一個(gè)WEB服務(wù)器端的開發(fā)環(huán)境,

      看了不少介紹,知道set rs=conn.execute(sql)的執(zhí)行效率比rs.open sql,conn,1,1要高很多,但是set rs=conn.execute(sql)這種執(zhí)行方式也有很多不足,首先它不具有分頁屬性,比如rs.pagesize,rs,absolutepage等屬性,這樣的話,通過這種方式set rs=conn.execute(sql)執(zhí)行的速度雖然快了,但是卻不能按普通方式進(jìn)行分頁,怎么辦呢??

      第二天,查了一下網(wǎng)上的資料,突然想到是否可以把所需數(shù)據(jù)提到一個(gè)數(shù)組里,然后對數(shù)組進(jìn)行分頁呢?首先把set rs=conn.execute(sql)查詢出來的結(jié)果通過rs.getrows()取出來附給一個(gè)數(shù)組,于是我就在各網(wǎng)站上找分頁的帖子,雖然發(fā)現(xiàn)不少高效率分頁的帖子(包括存儲過程等),可結(jié)果發(fā)現(xiàn)全都是需要通過SQL執(zhí)行的,即翻頁的時(shí)候也需要執(zhí)行SQL語句,此時(shí)頭都暈了,優(yōu)化的也只是SQL語句,此時(shí)實(shí)在沒辦法,只好自己努力了!終于完成了一個(gè)數(shù)組分頁的粗稿,代碼不是很完善,讓大家一起來研究一下!代碼如下:
      首先有一個(gè)index.asp查詢頁:

      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
      <title>無標(biāo)題文檔</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">留言內(nèi)容</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>無標(biāo)題文檔</title>
      </head>
      <body>
      <%
      If request.querystring("act")="cha" Then
      search_type=request.FORM("ChannelID")
      keywords=request.form("keyword")
      if search_type="k1" then '按照留言內(nèi)容搜索
      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
      %>
      <div class="search">沒有查找到您要的記錄!</div>
      <%
      response.End
      Else
      aResults=rs.getrows()'取出數(shù)據(jù)放入數(shù)組ROW中
      application("data")=aResults
      Set rs=nothing
      conn.close '關(guān)閉數(shù)據(jù)庫
      End IF
      End If

      aResults=application("data")
      Dim i,row,pagesize,epage,numb,pagecount,fenye
      numb=UBound(aResults,2) 1 '總記錄行數(shù)
      pagesize=2 '每頁條數(shù)

      If numb Mod pagesize = 0 Then '判斷總頁數(shù)
      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>內(nèi)容:<%=aResults(2,i)%></li>
      <li>時(shí)間:<%=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&"總頁數(shù)"&pagecount&",當(dāng)前頁"&epage&",總記錄為:"&numb
      response.write fenye
      End if
      %>
      </body>
      </html>

      總結(jié):本人認(rèn)為以上代碼除了初次查詢需要連接到數(shù)據(jù)庫外,其他時(shí)間都不需要連接數(shù)據(jù)庫,對于大型數(shù)據(jù)查詢或連接人數(shù)比較多的時(shí)候?qū)Y源節(jié)省還是很有用處理的!另外將查詢數(shù)組保存在application對象上,還可以根據(jù)application( "data")("username")來判斷某人查詢過什么,不過此代碼為初次模型,還有待今后大家一起努力改進(jìn)!希望大家都頂力關(guān)注支持,謝謝!

      測試代碼下載

      分享:一個(gè)免費(fèi)的簡單聊天室源代碼
      chat.html 以下為引用的內(nèi)容: <html> <head><title>Chat</title></head> <frameset rows="*,100"> &

      來源:模板無憂//所屬分類:ASP教程/更新時(shí)間:2008-08-22
      相關(guān)ASP教程