如何对数据库的
查询结果进行页面
显示事实上,有很多
方法,但主要有两种
类型:
一个数据库,所有满足查询的记录时间读到记录集,存储在
内存中,然后通过几个ADO的Recordset对象提供特殊
支持属性分页
处理:PageSize(页面大小)、PageCount(页码)和AbsolutePage(绝对页)
管理分页处理。
两。根据客户的指示,记录的数量将在每次符合查询
条件的记录中读取和显示。
主要的
区别是,前者是一次性全部记录读入内存,然后根据指令进行判断和分析,从而实现分页显示的效果,而后者则是根据指示和要求满足查询的记录读入内存数第一的判断,从而为实现直接分页显示
功能。
我们可以清楚地感觉到,当记录数在成千上万或更多的数据库,第一种方法的
执行效率将明显低于第二方法,因为每个客户查询页面将遵守所有的记录存储在
服务器内存中的条件,然后在页面的过程中,如果在同时,有超过100的客户网上查询,所以ASP应用的执行效率会受到很大的
影响。然而,当数对数据库服务器的并发
用户数不多的记录,没有什么差别,二是效率,对第一种方法的使用一般第一种方法,因为ASP
程序山高刀具制备第二类方法比较简单明了。
在这里,在我们共同的ASP论坛程序的作者作为一个例子,给你怎样的BBS程序实现分页显示功能的分析,因为我们通常使用的数据库记录数的BBS程序同时访问的数量不会太多,所以下面是使用前面
介绍的分页显示第一个实例方法。
的ADO访问数据库的分页显示的是记录集的记录
操作,所以我们首先要了解的reordset对象的属性和方法:
BOF属性:目前的指数是指记录集中的第一笔。
EOF属性:目前的指数是指记录集中的最后一搏。
移动方法:移动指数在一个记录集中的记录。
AbsolutePage属性:当前记录的
位置是在哪个页面绝对产权:在记录集的当前索引的位置。
总页数的属性:显示多少页的记录集对象的数据。
PageSize属性:显示器上显示的记录集对象中的每一页的记录数。
RecordCount属性:显示记录集对象的总记录数。
让我们
详细了解这些重要的属性和方法。
一、转炉和EOF属性
我们通常在ASP程序代码测试BOF和EOF属性,使指数点记录集的位置,使用BOF和EOF属性,这是一个记录集对象中包含一个记录或记录移动超出Recordset对象的范围。
如:
U3000 U3000
如果当前记录的位置是在一个记录集对象的第一行,BOF属性返回true,而另一方面,将返回false。
如果当前记录的位置是一个记录集对象中的最后一行后,EOF属性返回true,而另一方面,将返回false。
两BOF和EOF是假的:指标是在记录中。
转炉是真实的:目前的指数是指recordset.eof第一记录的是真实的:目前的指数是指记录集中的最后一条记录。
两BOF和EOF是真实的:有没有记录在记录集。
二、移动法
你可以用移动的方法将指标集到一定的记录。语法如下:
RS numrecords开始移动,
在这里,RS是一个对象变量,说明在党当之前的记录位置要移动的记录集对象;numrecords是一些正面和负面的表达,集手机定位当前记录数;开始是一个可选的项目,指定开始的唱片。
所有的记录集对象支持的移动方法,如果numrecords
参数大于零,在运动方向的结束当前的记录;如果小于零,然后开始在一个方向移动当前记录;如果一个空的记录集调用动作方法将产生一个
错误。
MoveFirst方法:将当前记录位置的第一个记录。
MoveLast方法:移动当前记录指针到最后一条记录。
MoveNext方法:将当前记录的位置到下一个record.moveprevious方法:将当前记录的位置记录。
移动{ }方法:将索引移动到n
笔记录,n从0。
三、AbsolutePage的属性
的AbsolutePage属性
设置当前记录的位置位于页面的页号;记录集对象为逻辑页使用PageSize属性,为PageSize每页记录数(除最后一页有一个创纪录的数字小于PageSize)。必须指出的是,并不是所有的数据提供者的支持这个属性,所以使用的时候要小心。
作为绝对的AbsolutePage属性属性相同,是基于1。如果当前行记录为记录集的第一行记录,AbsolutePage 1。的AbsolutePage属性可以设置移动到指定页的第一行记录的位置。
四、绝对的属性
如果你需要确定在记录集的当前索引的位置,你可以使用绝对性。
的绝对属性的值是当前指数相对于第一笔,从1的位置,即第一绝对是1。
需要注意的是,当访问记录集,它是不可能确保记录出现在同一
命令时。
使的绝对位置,你必须首先设置使用用户端光标(指针),和ASP代码如下:
rs2.cursorlocation = 3
五、PageCount的属性
用pagecount属性来确定多少页的数据都包含在记录集对象。这里的页面是一个收集数据的记录。的大小等于PageSize属性的设置。即使在最后一页上记录的数目较少,大小的最后一页又是一页总页数。必须指出的是,并不是所有的数据提供程序支持此属性。
六、PageSize的属性
PageSize属性是关键决定如何显示分页时,ADO访问数据库。使用它可以形成一个逻辑页多少记录。一个页面大小设置和建立这样的AbsolutePage属性可以转移到其他逻辑页的第一条记录。PageSize属性可以设置在任何时间。
七、RecordCount属性
这是一个非常常见和重要的属性,我们使用RecordCount属性找到多少条记录的记录集对象包括等:
在了解了上述的记录集对象的属性和方法,让我们考虑如何使用它们来实现我们的分页显示的目的。首先,我们可以设置为PageSize属性的值,它指定了记录形式的页码组;然后通过RecordCount属性确定总记录数;然后记录PageSize总数可分为页面显示的总数;最后通过AbsolutePage属性可以在指定的页面访问,它似乎并不复杂。让我们看看程序是如何完成的。
我们建立了一个简单的BBS应用,其数据库中分别有以下五个方面:ID,自动各岗位编号;主体,每个主题的;
名字,及后用户的名称;邮件,用户的电子邮件
地址;过期,加上后期的时间。数据库的DSN的论坛。我们将展示这是后分页的所有
步骤都放在一个过程称为ShowList(),以方便调用。下面的程序如下:
BBS显示后分页—
< %
pgsz = 20设置开关指定每页的帖子数20帖,一页
默认 设置conn = server.createobject(数据
连接)
集= server.createobject(ADODB。记录集)
SQL =SELECT * FROM
消息顺序按ID号
查询所有的帖子,以及按ID排列的帖子。
康涅狄格州开论坛
rs.open sql,Conn,1,1
如果rs.recordcount = 0
response.write 对不起,数据库中没有信息!
其他的
rs.pagesize = Cint(pgsz)集PageSize属性的值
Total=INT (RS.recordcount / PgSz * -1) *-1 'calculation to display the total number of pages
帕基诺=请求(帕基诺)
如果帕基诺= 然后
帕基诺= 1
其他的
帕基诺=帕基诺+ 1
pageno-1帕基诺=
最后如果
scrollaction =请求(scrollaction )
如果scrollaction = 然后
pageno-1帕基诺=
最后如果
如果scrollaction = 然后
帕基诺=帕基诺+ 1
最后如果
如果PageNo<1
帕基诺= 1
最后如果
n = 1
rs.absolutepage =帕基诺
响应。写
位置= rs.pagesize *帕基诺
pagebegin = position-rs.pagesize + 1
如果位置< rs.recordcount然后
pagend =位置
其他的
pagend = rs.recordcout
最后如果
响应。写入数据库查询结果
响应。写(常见的rs.recordcount栏整合信息,pagebegin pagend )。
响应。写
答:写主题用户电子邮件发布
日期 不做就做(无所谓)
行数= rs.pagesize
做while not rs.eof和行数> 0
如果n=1,那么
响应。写
其他的
响应。写
最后如果
N = N % >
>
>
< %
行数=行数1
移到下一项
环
集= rs.nextrecordset
环
康涅狄格州接近
设置=无
设置conn =没有
%>
>
< %
如果PageNo > 1
response.write
最后如果
如果行数= 0和帕基诺总则
response.write
最后如果
response.write
最后如果
%>
我相信每个人都应该能够读懂上面的程序完全,所以小编辑不会详细解释它在这里。值得注意的是,本程序使用一个小技巧>,这是用来
传输数据系列在每次调用ASP
文件,因为我们需要代表各调用程序的当前页码的参数传递,你可能想使用会话,但从节省
系统资源和一般条款,以隐藏的形式传输数据会达到更好的效果。
以上是本文的全部内容,希望能对大家有所帮助。