ADO记录集对象
ADO记录集对象(Recordset)可操作来自数据源的数据,通过Recordset对象可对几乎所有的数据进行操作。所有的Recordset对象均使用记录(行)和字段(列)进行构造。
1.ADO记录集对象操作
使用ADO记录集对象的集合、方法和属性可执行下列操作:
使用CursorType属性或Open方法指定游标类型。
使用Open方法打开记录集,使用Close方法关闭记录集。
使用AddNew方法、Update方法和Delete方法编辑记录。
2.ADO记录集对象属性
ADO记录集对象的属性如下:
AbsolutePage:识别当前记录所在的页码,可以为1至所含页码的长整型值,或以下值:
adPosUnknown:记录集为空。
adPosBof:当前记录集指针在BOF。
adPosEof:当前记录集指针在EOF。
AbsolutePosition:根据其在Recordset中的序号位置移动到记录,或确定当前记录的序号位置。
ActiveConnection:确定在其上将执行指定命令对象或打开指定记录集的连接对象。
BOF:表示当前记录位置位于记录集对象的第一个记录之前。
EOF:表示当前记录位置位于记录集对象的最后一个记录之后。
Bookmark:保存当前记录的位置并随时返回到该记录。
CacheSize:控制提供者在缓存中所保存的记录数目,并可控制一次恢复到本地内存的记录数。
CursorLocation:允许在各种游标库中进行选择,可选值如下:
adUseClient:使用客户端游标。
adUseServer:使用提供者游标。
CursorType:指定打开记录集对象时应该使用的游标类型,可选值如下:
AdOpenUnspecified:指出一个光标类型的不确定值,利用这个光标类型可以查询OLE DB允许什么样的光标存取。
adOpenForwardOnly:仅向前游标,除仅允许在记录中向前滚动之外,其行为类似动态游标。这样,当需要在记录集中单程移动时就可提高性能。
adOpenKeyset:键集游标,其行为类似动态游标,不同的只是禁止查看其他用户添加的记录,并禁止访问其他用户删除的记录,其他用户所作的数据更改将依然可见。它始终支持书签,因此允许记录集中各种类型的移动。
adOpenDynamic:动态游标,用于查看其他用户所作的添加、更改和删除,并用于不依赖书签的记录集中各种类型的移动。如果提供者支持,可使用书签。
adOpenStatic:静态游标,提供记录集合的静态副本以查找数据或生成报告。它始终支持书签,因此允许记录集中各种类型的移动。其他用户所作的添加、更改或删除将不可见。这是打开客户端 (ADOR) 记录集对象时惟一允许使用的游标类型。
EditMode:确定当前记录的编辑状态,可选值如下:
adEditNone:无编辑操作。
adEditInProgress:已经被编辑,还未保存。
adEditAdd:已经调用AddNew方法,新记录还为保存到数据库中。
Filter:选择性地屏蔽记录集对象中的记录,已筛选的记录集将成为当前游标,可选值如下:
adFilterNone:移除当前过滤器,回复记录视图。
adFilterPendingRecords:允许查看已更改但海外发送到服务器的记录。
adFilterAffectedRecords:允许叉开受CancelBatch 、Delete、Resync和UpdateBatch方法调用影响的记录。
adFilterFetchedRecords:允许叉开当前缓冲区中的记录。
LockType:指定打开时提供者应该使用的锁定类型,可选值如下:
adLockUnspecified:未指定。
adLockReadOnly:只读记录集。
adLockPessimistic:数据在更新时锁定其他所有动作这是最安全的锁定机制。
adLockOptimistic:只有在实际的更新命令中锁定记录,锁定状态维持时间最短,因此,使用的最频繁。
adLockBatchOptimistic:在数据库执行批量操作使用,是一个非常不安全的记录锁定形式,但是在应用程序需要处理许多记录时经常使用。
MarshalOptions:表示要被调度返回服务器的记录,可选值如下:
adMarshalAll:所以偶的记录都可以放回给服务器。
adMarshalModifiedOnly:只有编辑过的行可以返回给服务器。
MaxRecords:对提供者从数据源返回的记录数加以限制。
PageCount:确定记录集对象中数据的页数。
PageSize:确定组成逻辑数据页的记录数。
RecordCount:确定记录集对象中记录的数目。
Sort:指定一个或多个Recordset以其关键字(ASCENDING或DSCENDING)排序的字段名,并指定按升序还是降序对字段进行排序。
Source:记录集对象中数据的来源(命令对象、SQL语句、表的名称或存储过程)。
State:确定指定对象的当前状态。该属性是只读的。
Status:表示有关批更新或其他大量操作的当前记录的状态。
3.ADO记录集对象方法
ADO记录集对象的方法如下:
AddNew:可创建和初始化新记录。
Cancel:取消执行挂起的异步 Execute 或 Open 方法的调用。
CancelBatch:可取消批更新模式下记录集中所有挂起的更新。
CancelUpdate:可取消对当前记录所作的任何更改或放弃新添加的记录。
Clone:从现有的记录集对象创建记录集对象的副本。可选择指定该副本为只读。
Delete:可标记记录集对象中的当前记录或一组记录以便删除。
Move:移动记录集对象中当前记录的位置。
MoveFirst:移动到记录集的第一条记录。
MoveLast:移动到记录集的最后一个记录。
MoveNext:将当前记录向前移动一个记录(向记录集的底部)。
MovePrevious:将当前记录位置向后移动一个记录(向记录集的顶部)。
NextRecordset:清除当前记录集对象并通过提前命令序列返回下一个记录集。
Open:可打开代表基本表、查询结果或者以前保存的记录集中记录的游标。
Requery:通过重新执行对象所基于的查询,来更新记录集对象中的数据。
Resync:从现行数据库刷新当前记录集对象中的数据。
Save:将记录集保存(持久)在文件中。
Supports:确定记录集对象所支持的功能类型。
Update:保存对记录集对象的当前记录所做的所有更改。
UpdateBatch:将所有挂起的批更新写入磁盘。
下面对ADO记录集对象的常用方法进行详细介绍。
(1)Open方法
语法:
HRESULT Open(const _variant_t & Source, const _variant_t & ActiveConnection,enum CursorTypeEnum CursorType,enum LockTypeEnum LockType,long Options);
Open语法中的参数说明如表1所示。
表1 Open语法中的参数说明
|
参数
|
描述
|
|
Source
|
指定记录集的数据源
|
|
ActiveConnection
|
指定记录集对象使用的连接
|
|
CursorType
|
指定使用的游标类型
|
|
LockType
|
指定锁定类型
|
|
Options
|
指定数据源语句的类型
|
(2)AddNew方法
语法:
HRESULT AddNew(const _variant_t &FieldList = vtMissing,const _variant_t &values = vtMissing);
参数说明:
FieldList:指定字段列表数组。
Values:指定字段值数组。
(3)Update方法
语法:
HRESULT Update (const _variant_t &Fields = vtMissing,const _variant_t &values = vtMissing);
参数说明:
Fields:指定字段数组。
Values:指定字段值数组。
(4)Delete方法
语法:
HRESULT Delete(enum AffectEnum AffectRecords);
参数说明:
AffectRecords:AffectEnum枚举类型值,指定受影响的记录数。