主頁(yè) > 知識(shí)庫(kù) > 來(lái)自CSDN的無(wú)限流分頁(yè)程序

來(lái)自CSDN的無(wú)限流分頁(yè)程序

熱門標(biāo)簽:防城港市ai電銷機(jī)器人 溫嶺代理外呼系統(tǒng) 交行外呼系統(tǒng)有哪些 怎么更改地圖標(biāo)注電話 寧夏保險(xiǎn)智能外呼系統(tǒng)哪家好 不同的地圖標(biāo)注 激戰(zhàn)黃昏地圖標(biāo)注說(shuō)明 隨州銷售外呼系統(tǒng)平臺(tái) 臨滄移動(dòng)外呼系統(tǒng)哪家有

以下是代碼片段: 
'******************************************************************  
'** 本程序名:"無(wú)限流"分頁(yè)程序  
'** 作者:Arbiter(AAsx)  
'** 版本:Million Level  
'**  
'** QQ:22222xx  
'** Email:Arbiter@21cn.com  
'** http://www.imagecity.org/  
'******************************************************************  
'**  
'** 【作者的話】  
'**  
'** 分頁(yè)程序無(wú)疑是許多網(wǎng)絡(luò)程序功能中一個(gè)比較麻煩的東西,事實(shí)上現(xiàn)在  
'** 為止絕大部分人還是在使用傳統(tǒng)的分頁(yè)方法(Rs.PageSize=xx),而了解  
'** 數(shù)據(jù)庫(kù)操作的人都知道,這種傳統(tǒng)方式有個(gè)弊端:第一次打開頁(yè)面時(shí),  
'** 它會(huì)預(yù)讀所有的記錄集,這當(dāng)在數(shù)據(jù)大的時(shí)候,這將是致命的,而且接  
'** 下來(lái)的翻頁(yè)速度也會(huì)非常慢,很占用資源。對(duì)于十萬(wàn)數(shù)量級(jí)以上的數(shù)據(jù)  
'** 庫(kù)這種傳統(tǒng)分頁(yè)方式已經(jīng)顯得非常無(wú)力,更別說(shuō)百萬(wàn)級(jí)了(根本沒(méi)法操  
'** 作)?;谶@種原因,促使我做了本程序。  
'**  
'** 【程序功能】  
'**  
'** 針對(duì)大型的數(shù)據(jù)庫(kù)進(jìn)行分頁(yè)操作,理想的可操作的數(shù)據(jù)記錄量在200萬(wàn)  
'** 以內(nèi)(Max Level版將無(wú)數(shù)量限制,且無(wú)論數(shù)據(jù)庫(kù)多大,翻頁(yè)速度都是  
'** 不變),這是Million Level版分頁(yè)程序在賽揚(yáng)1G、內(nèi)存512、win2k環(huán)  
'** 境下的測(cè)試數(shù)據(jù):  
'**  
'** SQLserver 2k + 10萬(wàn)條記錄 + 每頁(yè)顯示20條:  
'** 平均翻頁(yè)速度:45ms  
'** SQLserver 2k + 100萬(wàn)條記錄 + 每頁(yè)顯示20條:  
'** 平均翻頁(yè)速度:350ms  
'**  
'**  
'** 【分頁(yè)原理】  
'**  
'** 本程序不再使用Rs.PageSize的方式分頁(yè),連接數(shù)據(jù)庫(kù)的游標(biāo)類型  
'** 也不是使用conn,1,x,而是conn,0,1,這應(yīng)是最快的游標(biāo)類型了,不要  
'** 以為這樣會(huì)使程序變得復(fù)雜,相反,程序非常簡(jiǎn)單,如果你看不明白,  
'** 應(yīng)該是我的編程風(fēng)格你不習(xí)慣,而非程序復(fù)雜。  
'** "無(wú)限流"分頁(yè)的中心是:每頁(yè)只讀出需要顯示的記錄,不再象傳統(tǒng)  
'** 分頁(yè)程序預(yù)讀全部的數(shù)據(jù),這正在本程序最大的優(yōu)點(diǎn)--占用資源少,同  
'** 理速度也得到非常大的提升,特別在數(shù)據(jù)量越大的時(shí)候,它的速度優(yōu)勢(shì)  
'** 越明顯(100萬(wàn)記錄才350ms左右)。  
'** 當(dāng)程序執(zhí)行后,使用CurcorBegin和CurcorEnd記錄顯示的第一條記  
'** 錄和最后一條記錄的ID值,作為下一次翻頁(yè)的標(biāo)記,然后利用Top xx取  
'** 出需要的數(shù)據(jù)顯示,同時(shí)又再對(duì)ID值進(jìn)行記錄。  
'**  
'** 【結(jié) 言】  
'**  
'** 本程序?yàn)楣蚕戆妫峁┙o各程序愛好者研究使用,若要轉(zhuǎn)載、散播、修  
'** 改或作其他用途,請(qǐng)尊重作者的辛勞,注明出處。  
'** 如果本程序中有錯(cuò)漏、非最優(yōu)化等缺點(diǎn),請(qǐng)到www.csdn.net的Web開發(fā)/  
'** ASP欄目中發(fā)表討論,為了中國(guó)軟件事業(yè)的發(fā)展,請(qǐng)不要固步自封:)  
'**  
'********************************************************************    
Option Explicit  
'Response.Flush  
Dim BeginTime,EndTime  
BeginTime=Timer  
Dim conn,SQLstr,Rs,DefRecordNum,CursorBegin,CursorEnd,CurPageNum,hav  
DefRecordNum=20  
'--------------獲取相關(guān)參數(shù)----------  
If Request("CursorBegin")="" Then CursorBegin=0 Else CursorBegin=Request("CursorBegin")  
If Request("CursorEnd")="" Then CursorEnd=0 Else CursorEnd=Request("CursorEnd")  
If Request("CurPageNum")>"" Then  
CurPageNum=CLng(Request("CurPageNum"))  
If CurPageNum=0 Then CurPageNum=1  
Else  
CurPageNum=1  
End If  
hav=Request("hav")  
If hav="" Then hav="next"  
'----------------End-----------------  
'------------顯示翻頁(yè)內(nèi)容函數(shù)--------  
Function TurnPageFS(DispRecordNum)  
Dim n  
While Not(Rs.Eof) And n n=n+1  
Response.Write ""_  
""Rs(0)""_  
""Rs(1)""_  
""Rs(2)""_  
""Rs(3)""_  
""Rs(4)""_  
""Rs(5)""_  
""  
If n=1 Then CursorBegin=Rs(0)  
If n=DefRecordNum Or Rs.Eof Then CursorEnd=Rs(0)  
Rs.MoveNext  
Wend  
End Function  
'-------------連接數(shù)據(jù)庫(kù)-------------  
Set conn=Server.CreateObject("Adodb.Connection")  
'SQLstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="Server.Mappath("mldata.mdb")  
SQLstr="Driver={SQL Server};server=arbiter;uid=arbiter;pwd=123456;database=mldata"  
conn.Open SQLstr  
'---------統(tǒng)計(jì)總記錄數(shù)/總頁(yè)數(shù)---------  
'-PS:推薦使用count(ID),ID為自動(dòng)編號(hào)且索引,否則速度有可能大打折扣  
'-PS:此統(tǒng)計(jì)是本程序中最耗資源的一部分,如果取消這段程序,速度會(huì)快上10倍左右  
Dim TotalRecords,TotalPages  
SQLstr="Select count(ID) As RecordSum From ABC"  
Set Rs=conn.Execute(SQLstr,0,1)  
TotalRecords=Rs("RecordSum")  
TotalPages=Abs(Int(TotalRecords/DefRecordNum*(-1)))  
Rs.Close  
Set Rs=Nothing  
'--------根據(jù)hav選擇相應(yīng)的SQL字串-----  
Select Case(hav)  
Case "back"  
CursorEnd=CursorBegin  
SQLstr="Select Top "DefRecordNum"_  
ID,Title,FileName,K,ImgSize,NameSon _  
From ABC Where ID"CursorBegin_  
" And ID In (Select Top "DefRecordNum_  
" ID From ABC Where ID"CursorBegin_  
" Order by ID DESC) Order by ID"  
Case "next"  
SQLstr="Select Top "DefRecordNum_  
" ID,Title,FileName,K,ImgSize,NameSon From ABC Where ID>"CursorEnd_  
" Order by ID"  
End Select  
Set Rs=conn.Execute(SQLstr,0,1)  
%>  



  

  
td,br,div,p,body {font-size:12px}  

  

   

首頁(yè) 上一頁(yè)   
下一頁(yè)   

  

   
ID  
Title  
FileName  
大小  
尺寸  
類別      

首頁(yè) 上一頁(yè)   下一頁(yè)  

function turnpage(func){  
var CurPageNum=; //取得當(dāng)前頁(yè)碼  
var CursorBegin=; //取得第一個(gè)顯示的記錄的ID值  
var CursorEnd=; //取得最后一個(gè)顯示的記錄的ID值  
var TotalPages=; //取得頁(yè)面總數(shù)   
var BackUrl='mllist.asp?CurPageNum='+(CurPageNum-1)+'CursorBegin='+CursorBegin+'CursorEnd='+CursorEnd+'hav=back';  
var NextUrl='mllist.asp?CurPageNum='+(CurPageNum+1)+'CursorBegin='+CursorBegin+'CursorEnd='+CursorEnd+'hav=next';  
if(CurPageNum=1  func=='back'){  
location.href='#';  
}else if(CurPageNum>=TotalPages  func=='next'){  
location.href='#';  
}else if(func=='back'){  
location.href=BackUrl;  
}else if(func='next'){  
location.href=NextUrl;  
}  
}

您可能感興趣的文章:
  • nginx 如何實(shí)現(xiàn)讀寫限流的方法
  • asp中"無(wú)限流"分頁(yè)程序代碼
  • RateLimiter 源碼分析

標(biāo)簽:無(wú)錫 河源 哈密 沈陽(yáng) 忻州 青海 阜陽(yáng) 紅河

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《來(lái)自CSDN的無(wú)限流分頁(yè)程序》,本文關(guān)鍵詞  來(lái)自,CSDN,的,無(wú),限流,分頁(yè),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《來(lái)自CSDN的無(wú)限流分頁(yè)程序》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于來(lái)自CSDN的無(wú)限流分頁(yè)程序的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章