国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > ASP > 正文

不連數據庫進行查詢分頁的思路

2024-05-04 11:07:30
字體:
來源:轉載
供稿:網友

看了不少介紹,知道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)
If  rs.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")來判斷某人查詢過什么,不過此代碼為初次模型,還有待今后大家一起努力改進!希望大家都頂力關注支持,謝謝!

test.rar

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金昌市| 土默特右旗| 白朗县| 包头市| 文化| 岳普湖县| 中山市| 焉耆| 光山县| 宁城县| 法库县| 凤城市| 苏尼特左旗| 广德县| 南通市| 张家港市| 泉州市| 宝鸡市| 兴安县| 无锡市| 道真| 新田县| 富蕴县| 平度市| 内丘县| 湘潭县| 夏河县| 宿迁市| 辽阳市| 岳普湖县| 广饶县| 临西县| 尤溪县| 汉中市| 海兴县| 罗源县| 镇平县| 大宁县| 长泰县| 平阳县| 大宁县|