首页 | 站长免费中心 | 新手上路 | 网站运营 | 网页制作 | 图片设计 | 动画设计 | 网页编程 | 网页特效 | 本站专题 | 虚拟主机 | 域名注册 | 网站建设 | 程序下载
       免费空间资源 | 新闻咨询 | 免费域名 | 免费网盘 | 网站推广 | 网站策划 | 建站经验 | 网站优化 | 网页代码 | 源码下载 | 音乐小偷 | 网络赚钱 | 论坛交流
网站建设
网站建设
虚拟主机
虚拟主机
域名注册
域名注册
711网络首页
站长工具
站长工具
网站源码
网站源码
站长论坛
站长论坛

 711网络 网页编程ASP代码

无限流分页

来源: 互联网    日期:2006-5-16
 

<%
'******************************************************************
'******************************************************************
'**
'** 【作者的话】
'**
'**  分页程序无疑是许多网络程序功能中一个比较麻烦的东西,事实上现在
'**  为止绝大部分人还是在使用传统的分页方法(Rs.PageSize=xx),而了解
'**  数据库操作的人都知道,这种传统方式有个弊端:第一次打开页面时,
'**  它会预读所有的记录集,这当在数据大的时候,这将是致命的,而且接
'**  下来的翻页速度也会非常慢,很占用资源。对于十万数量级以上的数据
'**  库这种传统分页方式已经显得非常无力,更别说百万级了(根本没法操
'**  作)。基于这种原因,促使我做了本程序。
'**
'** 【程序功能】
'**
'**  针对大型的数据库进行分页操作,理想的可操作的数据记录量在200万
'**  以内(Max Level版将无数量限制,且无论数据库多大,翻页速度都是
'**  不变),这是Million Level版分页程序在赛扬1G、内存512、win2k环
'**  境下的测试数据:
'**
'**  SQLserver 2k + 10万条记录 + 每页显示20条:
'**      平均翻页速度:45ms
'**  SQLserver 2k + 100万条记录 + 每页显示20条:
'**      平均翻页速度:350ms
'**
'**
'**  【分页原理】
'**
'**      本程序不再使用Rs.PageSize的方式分页,连接数据库的游标类型
'**  也不是使用conn,1,x,而是conn,0,1,这应是最快的游标类型了,不要
'**  以为这样会使程序变得复杂,相反,程序非常简单,如果你看不明白,
'**  应该是我的编程风格你不习惯,而非程序复杂。
'**      "无限流"分页的中心是:每页只读出需要显示的记录,不再象传统
'**  分页程序预读全部的数据,这正在本程序最大的优点--占用资源少,同
'**  理速度也得到非常大的提升,特别在数据量越大的时候,它的速度优势
'**  越明显(100万记录才350ms左右)。
'**      当程序执行后,使用CurcorBegin和CurcorEnd记录显示的第一条记
'**  录和最后一条记录的ID值,作为下一次翻页的标记,然后利用Top xx取
'**  出需要的数据显示,同时又再对ID值进行记录。
'**
'**  【结    言】
'**
'**  本程序为共享版,提供给各程序爱好者研究使用,若要转载、散播、修
'**  改或作其他用途,请尊重作者的辛劳,注明出处。
'**  如果本程序中有错漏、非最优化等缺点,请www.csdn.net的Web开发/
'**  ASP栏目中发表讨论,为了中国软件事业的发展,请不要固步自封:)
'**
'********************************************************************
Option Explicit
'Response.Flush
Dim BeginTime,EndTime
BeginTime=Timer
Dim conn,SQLstr,Rs,DefRecordNum,CursorBegin,CursorEnd,CurPageNum,hav
DefRecordNum=20
'--------------获取相关参数----------
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-----------------
'------------显示翻页内容函数--------
Function TurnPageFS(DispRecordNum)
Dim n
While Not(Rs.Eof) And n<DispRecordNum
n=n+1
Response.Write "<tr>"&_
"<td bgcolor='efefef'>"&Rs(0)&"</td>"&_
"<td bgcolor='efefef'>"&Rs(1)&"</td>"&_
"<td bgcolor='efefef'>"&Rs(2)&"</td>"&_
"<td bgcolor='efefef'>"&Rs(3)&"</td>"&_
"<td bgcolor='efefef'>"&Rs(4)&"</td>"&_
"<td bgcolor='efefef'>"&Rs(5)&"</td>"&_
"</tr>"
If n=1 Then CursorBegin=Rs(0)
If n=DefRecordNum Or Rs.Eof Then CursorEnd=Rs(0)
Rs.MoveNext
Wend
End Function
'-------------连接数据库-------------
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
'---------统计总记录数/总页数---------
'-PS:推荐使用count(ID),ID为自动编号且索引,否则速度有可能大打折扣
'-PS:此统计是本程序中最耗资源的一部分,如果取消这段程序,速度会快上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
'--------根据hav选择相应的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)
%>
<html>
<head>
<title>"无限流"分页程序  作者:Arbiter</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">td,br,div,p,body {font-size:12px}</style>
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0">
<table width="100%" border="0" cellspacing="0" cellpadding="3" bgcolor="#E2F5FE">
<tr align="center"> 
<td colspan="2"><%Response.Write CurPageNum&"/"&TotalPages&"页 总记录数:"&TotalRecords%></td>
<td>首页</a> 上一页</a> 
下一页</a> </td>
</tr>
</table>
<table width="100%" border="1" cellspacing="0" cellpadding="3" bgcolor="#CCCCCC">
<tr> 
<td>ID</td>
<td>Title</td>
<td>FileName</td>
<td>大小</td>
<td>尺寸</td>
<td>类别</td>
</tr>
<%
TurnPageFS(DefRecordNum)
Rs.Close
Set Rs=Nothing
conn.Close
Set conn=Nothing
%> 
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="3" bgcolor="#E2F5FE">
<tr align="center"> 
<td colspan="2"><%Response.Write CurPageNum&"/"&TotalPages&"页 总记录数:"&TotalRecords%></td>
<td>首页</a> 上一页</a> 
下一页</a> </td>
</tr>
</table>
<%
EndTime=Timer
Response.Write "<br>程序执行时间:"&(EndTime-BeginTime)*1000&"毫秒"
Response.Write "  第一条记录的ID值(CursorBegin)="&CursorBegin&"  "
Response.Write "最后一条记录的ID值(CursorEnd)="&CursorEnd&"<br><br>"
%>
<script language="javascript">
function turnpage(func){
var CurPageNum=<%=CurPageNum%>;  //取得当前页码
var CursorBegin=<%=CursorBegin%>; //取得第一个显示的记录的ID值
var CursorEnd=<%=CursorEnd%>;  //取得最后一个显示的记录的ID值
var TotalPages=<%=TotalPages%>;  //取得页面总数
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;
}
}
</script>
</body>
</html>



更多的无限流分页请到论坛查看: http://BBS.TC711.COM



【 双击滚屏 】 【 评论 】 【 收藏 】 【 打印 】 【 关闭 】 来源: 互联网    日期:2006-5-16   

发 表 评 论
查看评论

  您的大名:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
认证编码: 刷新验证码
点评内容: 字数0
  精品推荐  
  本月推荐  
  友情赞助  

关于我们 | 联系我们 | 广告投放 | 留言反馈 | 免费程序 | 虚拟主机 | 网站建设 |  网站推广 |  google_sitemap baidu_sitemap RSS订阅
本站所有资源均来自互联网,如有侵犯您的版权或其他问题,请通知管理员,我们会在最短的时间回复您
Copyright © 2005-2015 Tc711.Com All Rights Reserved 版权所有·711网络   蜀ICP备05021915号
110网监备案 信息产业备案 不良信息举报