Recordset记录集对象的属性和方法(一)
时 间:2012-07-18 08:21:27
作 者:宏鹏(转载) ID:21115 城市:上海
摘 要:Recordset记录集对象的属性和方法
正 文:
Recordset对象的作用是由数据库返回记录集。根据查询结果返回一个包含所查询数据的记录集,然后显示在页面上。因为删除、更新、添加操作不需要返回记录集,因此可以直接使用连接对象或是命令对象的Exexut方法,但是利用记录集对象有时会更简单,此外,通过记录集对象能够实现比较复杂的数据库管理任务,比如要采用分页显示记录就必须使用记录集对象。
Recordset对象可以用来代表表中的记录,可以把记录集看成是一张虚拟的表格,包含一条或多条记录(行),每条记录包含一个或多个字段,但任何时候只有一条记录为当前记录。
可以在非显式建立连接对象的情况下,直接打开一个带有查询的记录集,或是对命令对象的查询返回一个记录集。ADO提供这种灵活性,可以用最简单的方式指明一个字符串来说明连接方式,从而得到数据库的查询结果,ADO会自动创建所需要的连接对象。当然也可以显式创建连接对象和命令对象,这样可以获得更多的灵活性,实现更为强大的功能。
可以在非显式建立连接对象的情况下,直接打开一个带有查询的记录集,或是对命令对象的查询返回一个记录集。ADO提供这种灵活性,可以用最简单的方式指明一个字符串来说明连接方式,从而得到数据库的查询结果,ADO会自动创建所需要的连接对象。当然也可以显式创建连接对象和命令对象,这样可以获得更多的灵活性,实现更为强大的功能。
一、 建立Recordset对象
创建记录集的方法主要有两种。可以先建立连接对象,再创建记录集对象;也可以在非显式建立连接对象的情况下,创建记录集对象。
第一种,先建立连接对象,再创建记录集对象,用法见下面的范例。
范例6-23:先建立连接对象,再创建记录集对象
<%
Set db=Server.CreateObject("ADODB.Recordset") ' 先建立连接对象
db.Open"zbsdbbszb"
Set rs=db.Execute(Select * from article) ' 建立记录集对象rs
%>
范例6-23:先建立连接对象,再创建记录集对象
<%
Set db=Server.CreateObject("ADODB.Recordset") ' 先建立连接对象
db.Open"zbsdbbszb"
Set rs=db.Execute(Select * from article) ' 建立记录集对象rs
%>
注意:为了说明问题的方便,给记录集对象取名为rs,本书下面的实例中记录集对象名均为rs。
第二种,在非显式建立连接对象的情况下,用Server对象的CreatObject方法建立并打开记录集对象,语法如下:
Set rs=Server.CreateObject("ADODB.Recordset")
rs.Open参数
Open方法的参数见表6-16。
Set rs=Server.CreateObject("ADODB.Recordset")
rs.Open参数
Open方法的参数见表6-16。
表6-16 Open方法的参数
|
|
参数
|
说明
|
Source
|
数据库查询信息
|
ActiveConnection
|
数据库连接信息
|
CursorType
|
记录集中的指针类型,可选,见表6-17
|
LockType
|
锁定类型,可选,见表6-18
|
Options
|
数据库查询信息类型,可选,见表6-19
|
CursorType参数值表6-17:
表6-17 CursorType参数值
|
||
参数
|
值
|
说明
|
AdOpenForwardOnly
|
0
|
向前指针,默认值。只能用MoveNext方法或GetRows方法向前单向移动指针,所耗系统资源最少,执行速度也最快,但很多属性和方法将不能用
|
AdOpenKeyset
|
1
|
键盘指针,记录集中可以前后移动。某一用户修改数据后,其他用户可以立即显示,但禁止查看其他用户添加和删除的记录
|
AdOpenDynamic
|
2
|
动态指针,记录集中可以前后移动。所有修改会立即在其他客户端显示,功能强大,但所耗系统资源也多
|
AdOpenStatic
|
3
|
静态指针,记录集中可以前后移动。所有修改不会在其他客户端显示
|
说明:
▲ 关于指针(又称游标)。所谓记录集,如同一个电子表格,包含所获取的若干记录,每条记录又包含若干字段。如果记录不为空,打开记录集后,指针指向第一条记录。可以通过移动指针在记录集中漫游,指针所指向的记录为当前记录,当前记录只能有一条。
▲ 在默认情况下,当打开记录集,为向前指针,只能用MoveNext方法向前单向移动指针,其他操作不受支持。如果需要编辑、添加和删除记录,想使用可前后移动的指针,并且需要看到其他用户的对数据库的修改,就需要使用其他类型的指针。
LockType参数值表6-18:
▲ 关于指针(又称游标)。所谓记录集,如同一个电子表格,包含所获取的若干记录,每条记录又包含若干字段。如果记录不为空,打开记录集后,指针指向第一条记录。可以通过移动指针在记录集中漫游,指针所指向的记录为当前记录,当前记录只能有一条。
▲ 在默认情况下,当打开记录集,为向前指针,只能用MoveNext方法向前单向移动指针,其他操作不受支持。如果需要编辑、添加和删除记录,想使用可前后移动的指针,并且需要看到其他用户的对数据库的修改,就需要使用其他类型的指针。
LockType参数值表6-18:
表6-18 LockType参数值
|
||
参数
|
值
|
说明
|
AdLockReadOnly
|
1
|
只读,默认值,适用于仅浏览数据
|
AdLockPessimistic
|
2
|
只能同时被一个用户所修改,修改时锁定,完毕解锁
|
AdLockOptimistic
|
3
|
可以同时被多个用户所修改,直到用update方法更新记录才锁定
|
AdLockBatchOptimistic
|
4
|
数据可以被修改,且不锁定其他用户,指定数据成批更新
|
说明:
▲ 锁定目的是确保数据的完整性,以防止更改被覆盖。
▲ 当不需要修改记录,应该使用默认的只读记录集,这样执行速度快,消耗系统资源少;如果是需要修改记录,一般情况下,选择取值2,记录只锁定一下,即可保护更改操作,也不消耗过多的系统资源。
Options参数值表6-19:
▲ 锁定目的是确保数据的完整性,以防止更改被覆盖。
▲ 当不需要修改记录,应该使用默认的只读记录集,这样执行速度快,消耗系统资源少;如果是需要修改记录,一般情况下,选择取值2,记录只锁定一下,即可保护更改操作,也不消耗过多的系统资源。
Options参数值表6-19:
表6-19 Options参数值
|
||
参数
|
值
|
说明
|
AdCmdUnkown
|
-1
|
表示CommandText参数类型无法确定,默认值
|
AdCmdText
|
1
|
表示CommandText参数是命令类型
|
AdCmdTable
|
2
|
表示CommandText参数是表名称
|
AdCmdStoreProc
|
3
|
表示CommandText参数是存储过程名称
|
范例6-24:建立记录集对象
<%
Set rs=Server.CreateObject("ADODB. Recordset")
rs.Open" Select * from article","dsn=zbsdbbszb" ' 在Open方法中给出数据源
%>
说明:
▲ 非显式创建连接对象和命令对象。
▲ Select * from article
这个查询字符串定义后,记录集对象会自动把它转换到一个命令对象上。
▲ dsn=zbsdbbszb
这是创建连接对象的连接字符串。
<%
Set rs=Server.CreateObject("ADODB. Recordset")
rs.Open" Select * from article","dsn=zbsdbbszb" ' 在Open方法中给出数据源
%>
说明:
▲ 非显式创建连接对象和命令对象。
▲ Select * from article
这个查询字符串定义后,记录集对象会自动把它转换到一个命令对象上。
▲ dsn=zbsdbbszb
这是创建连接对象的连接字符串。
二、Recordset记录集对象的属性
Recordset记录集对象常用属性见表6-20。
Recordset记录集对象常用属性见表6-20。
表6-20 Recordset记录集对象常用属性见表
|
|
属性
|
说明
|
Source
|
指示记录集对象中数据的来源(命令对象名或SQL语句或表名)
|
ActiveConnection
|
连接对象名或包含数据库的连接信息的字符串
|
CursorType
|
记录集中的指针类型,可选,见表6-16
|
LockType
|
锁定类型,可选,见表6-17
|
MaxRecors
|
控制从服务器获取的记录集的最大记录数
|
CursorLocation
|
控制数据处理是在客户端还是在服务器端
|
Filter
|
控制要显示的内容
|
Bof
|
记录集的开头
|
Eof
|
记录集的结尾
|
RecordCount
|
记录集总数
|
PageSize
|
分页显示时每一页的记录数
|
PageCount
|
分页显示时数据页的总页数
|
AbsolutePage
|
当前指针所在的数据页
|
AbsolutePosition
|
当前指针所在的记录行
|
Recordset记录集对象常用属性具体说明如下。
1.Source
用于设置数据库的查询信息,查询信息可以是命令对象名或SQL语句或表名,语法如下:
rs.Source=查询信息
2.ActiveConnection
用于设置数据库的连接信息,连接信息可以是连接对象名或包含数据库的连接信息的字符串,语法如下:
rs.ActiveConnection=连接信息
3.CursorType
用于设置记录集指针类型,取值参见表6-17,语法如下:
rs.CursorType=值
默认为0,即指针只能前移。如果要让指针自由移动,一般设为键盘指针1。
4. LockType
用于设置记录集的锁定类型。取值参见表6-18,语法如下:
rs.LockType=值
默认为1,只读属性。如果要利用记录集对象进行添加、删除、更新等操作,只能由一个用户修改,一般需要设置其属性为2。
5.MaxRecors
用于设定从服务器上得到的最大记录数,语法如下:
rs.MaxRecors=最大记录数
通常这种方法不常用,而是使用SQL语句来指定所得到的最大记录数,”Select Top 整数…”。
6.CursorLocation
用于设置数据处理是在客户端还是在服务器端。取值参见表6-21,语法如下:
rs.CursorLocation =值
1.Source
用于设置数据库的查询信息,查询信息可以是命令对象名或SQL语句或表名,语法如下:
rs.Source=查询信息
2.ActiveConnection
用于设置数据库的连接信息,连接信息可以是连接对象名或包含数据库的连接信息的字符串,语法如下:
rs.ActiveConnection=连接信息
3.CursorType
用于设置记录集指针类型,取值参见表6-17,语法如下:
rs.CursorType=值
默认为0,即指针只能前移。如果要让指针自由移动,一般设为键盘指针1。
4. LockType
用于设置记录集的锁定类型。取值参见表6-18,语法如下:
rs.LockType=值
默认为1,只读属性。如果要利用记录集对象进行添加、删除、更新等操作,只能由一个用户修改,一般需要设置其属性为2。
5.MaxRecors
用于设定从服务器上得到的最大记录数,语法如下:
rs.MaxRecors=最大记录数
通常这种方法不常用,而是使用SQL语句来指定所得到的最大记录数,”Select Top 整数…”。
6.CursorLocation
用于设置数据处理是在客户端还是在服务器端。取值参见表6-21,语法如下:
rs.CursorLocation =值
表6-21 CursorLocation参数值
|
||
参数
|
值
|
说明
|
AdUseClient
|
1
|
客户端处理
|
AdUseServer
|
2
|
服务器端处理
|
AdUseClientBatch
|
3
|
动态处理,在客户端处理,处理时连接切断,处理完毕重新连接
|
有的时候,为了减轻服务器的工作负担,可以根据情况的需要,设置在客户端处理。
7.Filter
用于设置要显示的内容。取值参见表6-22,语法如下:
rs.Filter =值
7.Filter
用于设置要显示的内容。取值参见表6-22,语法如下:
rs.Filter =值
表6-22 Filter参数值
|
||
参数
|
值
|
说明
|
AdFilterNone
|
0
|
显示所有数据
|
AdFilterpendRecords
|
1
|
只显示没有修改过的数据
|
AdFilterAffectedRecords
|
2
|
只显示最近修改过的数据
|
AdFilterFetchedRecords
|
3
|
只显示暂存于客户端缓存中的数据
|
8.BOF
用于判断当前记录指针是否在记录集的开头,如在开头,返回True,否则返回Falsh。如果记录集为空,也返回True。9.EOF
用于判断当前记录指针是否在记录集的结尾,如在结尾,返回True,否则返回Flash。如果记录集为空,也返回True。
记录集有两个特殊位置:BOF和 EOF。BOF表示记录集的开头,位于第一条记录之前;EOF表示记录集结尾,位于最后一条记录之后。BOF 为 True,当前指针指到 RecordSet 的第一条记录; EOF 为 True,当前指标指到 RecordSet 的最后一条记录。如果记录集不为空,指针可以在BOF、所有记录和EOF移动。如果记录集为空,此时指针同时指向BOF和 EOF,它们的值均为True。
具体判断如下:若当前记录的位置是在一个 Recordset 对象第一行记录之前时, BOF 属性返回 True,反之则返回 False。;若当前记录的位置是在一个 Recordset 对象最后一行记录之后时,EOF 属性返回 True,反之则返回 False;BOF 与 EOF 都为 False,表示指标位于 RecordSet 的当中;BOF 与 EOF 都为 True,在 RecordSet 里没有任何记录。
从以上可知,通过检验 BOF 与 EOF 属性,可以得知当前指针所指向的 RecordSet 的位置,使用 BOF 与 EOF 属性,可以得知一个 Recordset 对象是否包含有记录或者得知移动记录行是否已经超出该 Recordset 对象的范围。
判断记集录是否为空的代码如下:
< %
if not rs.bof and rs.eof then ' 如果不是开头,也不是结尾,则执行
…
End if
%>
循环输出记录集记录的代码如下:
< %
Do while not rs.eof ' 如果没有到达记录集未尾,则循环输出下面的记录
…
Rs.MoveNext
Loop
%>
10.RecordCount
用于返回记录集中的记录总数。我们常用 RecordCount 属性来找出一个 Recordset 对象包括多少条记录。例如:
< % Rsponse.Write rs.RecordCount %>
要注意的是,使用RecordCount必须设置指针类型为键盘指针1或是静态指针3。
11.PageCount
用于设置分页显示时数据页的总数。使用PageCount 属性,决定 Recordset 对象包括多少“页”的数据。这里的“页”是指数据记录的集合,大小等于 PageSize 属性的设定,即使最后一页的记录数比 PageSize 的值少,最后一页也算是 PageCount 的一页。
12. PageSize 属性
用于设置分页时每一页所显示的记录数。PageSize 属性是决定 ADO 存取数据库时如何分页显示的关键,使用它就可以决定多少记录组成一个逻辑上的“1页”。
第10、11、12条属性通常是用于分页显示,具体运用见下面的范例。
13.AbsolutePage
用于设置当前指针位于哪一页。语法如下:
rs.AbsolutePage =整数值
14.AbsolutePosition
用于设置当前指针所在的记录行。语法如下:
rs.AbsolutePosition =整数值
后面的这些属性使用时,一般需要设置指针类型为键盘指针1。
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台--对上传...(11.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)