ASP分页代码(大型数据库)的

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

'******************************************************************'**本程序名:无限流分页程序'**作者:Arbiter(AAsx)'**版本:MillionLevel'**'**QQ:22222xx'**Email:Arbiter@21cn.com'********************************************************************'**'**【作者的话】'**'**分页程序无疑是许多网络程序功能中一个比较麻烦的东西,事实上现在'**为止绝大部分人还是在使用传统的分页方法(Rs.PageSize=xx),而了解'**数据库操作的人都知道,这种传统方式有个弊端:第一次打开页面时,'**它会预读所有的记录集,这当在数据大的时候,这将是致命的,而且接'**下来的翻页速度也会非常慢,很占用资源。对于十万数量级以上的数据'**库这种传统分页方式已经显得非常无力,更别说百万级了(根本没法操'**作)。基于这种原因,促使我做了本程序。'**'**【程序功能】'**'**针对大型的数据库进行分页操作,理想的可操作的数据记录量在200万'**以内(MaxLevel版将无数量限制,且无论数据库多大,翻页速度都是'**不变),这是MillionLevel版分页程序在赛扬1G、内存512、win2k环'**境下的测试数据:'**'**SQLserver2k10万条记录每页显示20条:'**平均翻页速度:45ms'**SQLserver2k100万条记录每页显示20条:'**平均翻页速度:350ms'**'**'**【分页原理】'**'**本程序不再使用Rs.PageSize的方式分页,连接数据库的游标类型'**也不是使用conn,1,x,而是conn,0,1,这应是最快的游标类型了,不要'**以为这样会使程序变得复杂,相反,程序非常简单,如果你看不明白,'**应该是我的编程风格你不习惯,而非程序复杂。'**无限流分页的中心是:每页只读出需要显示的记录,不再象传统'**分页程序预读全部的数据,这正在本程序最大的优点--占用资源少,同'**理速度也得到非常大的提升,特别在数据量越大的时候,它的速度优势'**越明显(100万记录才350ms左右)。'**当程序执行后,使用CurcorBegin和CurcorEnd记录显示的第一条记'**录和最后一条记录的ID值,作为下一次翻页的标记,然后利用Topxx取'**出需要的数据显示,同时又再对ID值进行记录。'**'**【结言】'**'**本程序为共享版,提供给各程序爱好者研究使用,若要转载、散播、修'**改或作其他用途,请尊重作者的辛劳,注明出处。'**如果本程序中有错漏、非最优化等缺点,请到开发/'**ASP栏目中发表讨论,为了中国软件事业的发展,请不要固步自封:)'**'********************************************************************OptionExplicit'Response.FlushDimBeginTime,EndTimeBeginTime=TimerDimconn,SQLstr,Rs,DefRecordNum,CursorBegin,CursorEnd,CurPageNum,havDefRecordNum=20'--------------获取相关参数----------IfRequest(CursorBegin)=ThenCursorBegin=0ElseCursorBegin=Request(CursorBegin)IfRequest(CursorEnd)=ThenCursorEnd=0ElseCursorEnd=Request(CursorEnd)IfRequest(CurPageNum)ThenCurPageNum=CLng(Request(CurPageNum))IfCurPageNum=0ThenCurPageNum=1ElseCurPageNum=1EndIfhav=Request(hav)Ifhav=Thenhav=next'----------------End-----------------'------------显示翻页内容函数--------FunctionTurnPageFS(DispRecordNum)DimnWhileNot(Rs.Eof)AndnDispRecordNumn=n1Response.Writetr&_tdbgcolor='efefef'&Rs(0)&/td&_tdbgcolor='efefef'&Rs(1)&/td&_tdbgcolor='efefef'&Rs(2)&/td&_tdbgcolor='efefef'&Rs(3)&/td&_tdbgcolor='efefef'&Rs(4)&/td&_tdbgcolor='efefef'&Rs(5)&/td&_/trIfn=1ThenCursorBegin=Rs(0)Ifn=DefRecordNumOrRs.EofThenCursorEnd=Rs(0)Rs.MoveNextWendEndFunction'-------------连接数据库-------------Setconn=Server.CreateObject(Adodb.Connection)'SQLstr=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=&Server.Mappath(mldata.mdb)SQLstr=Driver={SQLServer};server=arbiter;uid=arbiter;pwd=123456;database=mldataconn.OpenSQLstr'---------统计总记录数/总页数---------'-PS:推荐使用count(ID),ID为自动编号且索引,否则速度有可能大打折扣'-PS:此统计是本程序中最耗资源的一部分,如果取消这段程序,速度会快上10倍左右DimTotalRecords,TotalPagesSQLstr=Selectcount(ID)AsRecordSumFromABCSetRs=conn.Execute(SQLstr,0,1)TotalRecords=Rs(RecordSum)TotalPages=Abs(Int(TotalRecords/DefRecordNum*(-1)))Rs.CloseSetRs=Nothing'--------根据hav选择相应的SQL字串-----SelectCase(hav)CasebackCursorEnd=CursorBeginSQLstr=SelectTop&DefRecordNum&_ID,Title,FileName,K,ImgSize,NameSon_FromABCWhereID&CursorBegin&_AndIDIn(SelectTop&DefRecordNum_&IDFromABCWhereID&CursorBegin_&OrderbyIDDESC)OrderbyIDCasenextSQLstr=SelectTop&DefRecordNum_&ID,Title,FileName,K,ImgSize,NameSonFromABCWhereID&CursorEnd&_OrderbyIDEndSelectSetRs=conn.Execute(SQLstr,0,1)%htmlheadtitle无限流分页程序作者:Arbiter/titlemetahttp-equiv=Content-Typecontent=text/html;charset=gb2312styletype=text/csstd,br,div,p,body{font-size:12px}/style/headbodybgcolor=#FFFFFFleftmargin=0topmargin=0tablewidth=100%border=0cellspacing=0cellpadding=3bgcolor=#E2F5FEtralign=centertdcolspan=2%Response.WriteCurPageNum&/&TotalPages&页总记录数:&TotalRecords%/tdtdahref=mllist.asp首页/aahref=javascript:turnpage('back');上一页/aahref=javascript:turnpage('next');下一页/a/td/tr/tabletablewidth=100%cellspacing=0cellpadding=3bgcolor=#CCCCCCtrtdID/tdtdTitle/tdtdFileName/tdtd大小/tdtd尺寸/tdtd类别/td/tr%TurnPageFS(DefRecordNum)Rs.CloseSetRs=Nothingconn.CloseSetconn=Nothing%/tabletablewidth=100%border=0cellspacing=0cellpadding=3bgcolor=#E2F5FEtralign=centertdcolspan=2%Response.WriteCurPageNum&/&TotalPages&页总记录数:&TotalRecords%/tdtdahref=mllist.asp首页/aahref=javascript:turnpage('back');上一页/aahref=javascript:turnpage('next');下一页/a/td/tr/table%EndTime=TimerResponse.Writebr程序执行时间:&(EndTime-BeginTime)*1000&毫秒Response.Write第一条记录的ID值(CursorBegin)=&CursorBegin&Response.Write最后一条记录的ID值(CursorEnd)=&CursorEnd&brbr%scriptlanguage=javascriptfunctionturnpage(func){varCurPageNum=%=CurPageNum%;//取得当前页码varCursorBegin=%=CursorBegin%;//取得第一个显示的记录的ID值varCursorEnd=%=CursorEnd%;//取得最后一个显示的记录的ID值varTotalPages=%=TotalPages%;//取得页面总数varBackUrl='mllist.asp?CurPageNum='(CurPageNum-1)'&CursorBegin='CursorBegin'&CursorEnd='CursorEnd'&hav=back';varNextUrl='mllist.asp?CurPageNum='(CurPageNum1)'&CursorBegin='CursorBegin'&CursorEnd='CursorEnd'&hav=next';if(CurPageNum=1&&func=='back'){location.href='#';}elseif(CurPageNum=TotalPages&&func=='next'){location.href='#';}elseif(func=='

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功