一:一个老生常谈的问题。 我们知道,记录集分页是数据库处理中十分常见的问题。而当我们设计到网络数据库,就是说要考虑传输带宽问题时,分页问题就每每困扰着每一个数据库程序设计人员。 二:分页问题的解决方案汇总 说起解决的方案,每个数据库设计人员可能都会举出许多方法。但细分后,可以归为三类。一:Ado纪录集分页、二:专储记录集分页、三、数据库游标分页。 一:著名的ADO纪录集分页。 说到著名,因为这个可能是最简单和常见的分页方法了。(可能也是用的最多的)就是利用ADO自带的分页功能来实现分页。 具体流程为,数据库根据查询语句返回一个完整的纪录集。然后到客户端后有客户端的游标进行分页。他们大多数由ADO自带的Recordset对象就可以实现了。可能涉及到的属性有: recordset.pagesize:每页输出纪录集的大小 recordset.AbsolutePage: 当前输出的页 (有以上的两个属性其实就可以完成分页输出了) recordset.pagecount: 目前的总页数。 这种方法好不好呢,有的人说是十分好,也有人说效率不高。其实这的根据实际的应用状况来确定,如果是单机数据库,或者是局域网环境,或者数据库纪录较少,则他都是很好的分页方法,而且如果不涉及到网络和更新较少的环境里,则他可以说是最好的分页方法。因为它可以先生成一个缓存记录集,以后的几页纪录都可以不通过数据库来取即可。但是,如果涉及到网络,或者是更新频繁。他就不是很实用的了。 列举程序。(我们都用网络问题来考虑) nowpage=Request("nowpage") '当前的输出页 if nowpage="" or nowpage<1 then nowpage=1 set rs=server.CreateObject("adodb.recordset") rs.CursorType=1 sql="select * from table1 " rs.open sql,strconn (strconn为连接字段,已定义过) rs.PageSize=20 '当前页的大小 if cint(nowpage)>rs.pagecount then nowpage=rs.pagecount rs.AbsolutePage=nowpage '然后输出当前一页的纪录 '............. 还可以提供一下程序属性设置。 首页:nowpage=1 前页:nowpage=nowpage-1 下页:nowpage=nowpage+1 尾页:nowpage=rs.pagecount 总纪录数:rs.recordcount 总页数:rs.pagecount |