ADO访问数据库时如何分页显示

ADO访问数据库时如何分页显示
如何对数据库的查询结果进行页面显示事实上,有很多方法,但主要有两种类型

一个数据库,所有满足查询的记录时间读到记录集,存储在内存中,然后通过几个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文件,因为我们需要代表各调用程序的当前页码的参数传递,你可能想使用会话,但从节省系统资源和一般条款,以隐藏的形式传输数据会达到更好的效果。

以上是本文的全部内容,希望能对大家有所帮助。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部