记录集对象为用户提供了大部分与数据进行交互的功能,其中封装了一系列的数据源的记录。记录集对象可以作为查询、打开表或者执行一个存储过程的结果。记录集对象代表了一个单独的记录集。你可以不必先建立连接,然后再获得记录集。而是可以直接打开一个记录集,在打开记录集时,就隐含地建立了一个与数据源的连接。
记录集对象代表了从数据源返回的所有记录。在处理记录数据时,是通过包含在记录集中的字段集合对象中的字段对象来处理记录数据。记录集对象中包含一个用于处理记录的各个列的字段对象集合。这个集合中都有一个相关的字段对象,字段对象用于访问和处理列数据。
1. 记录集对象方法
(1)简单移动函数。
简单移动函数用于在记录集中定位记录。这些函数用于顺序移动的场合,都不带参数。其函数原型如下:
(2)Move()函数。
Move()函数用来移动到指定的记录。Move()函数原型如下:
参数说明:
NumRecords:指定记录集中的指针从当前位置要移动的行数,其类型为一个有符号的long值。如果给此参数传送正值,指针向前移;如果传送负值,指针向后移。
Start:可选参数,用于指定起始位置,也可以给此值传送一个书签值。此值的可选值定义如下:
adBookmarkCurrent:缺省值,从当前位置起始。
adBookmarkFirst:第一条记录为起始位置。
adBookmarkLast:最后一条记录为起始位置。所有的数据提供程序都支持此函数。
(3)NextRecordset()函数。
NextRecordset()函数用于移动到下一个由复合查询返回的记录集,此命令将清除当前的记录集,并为产生下一个记录集返回数据。NextRecordset()函数原型如下:
参数说明:
RecordsAffected:可选参数,表明当前操作影响的记录数目。
返回值:
NextRecordset()函数的返回值是下一个记录集对象指针。
在应用程序中执行的命令是存储过程时,将返回多个记录集,此函数就是用来获得此复合命令中得到的下一个记录集。
(4)Open()函数。
Open()函数用于直接打开一个记录集,而不是作为执行命令或者连接命令产生的记录集,Open()函数原型如下:
参数说明:
Source:可选参数,用于指明打开记录集的数据源,数据源的类型可以是命令对象、查询命令、表名或者一个存储过程等。
ActiveConnection:可选参数,是一个连接对象的变量名或者是一个包含连接信息的字符串。
CursorType:可选参数,是一个CursorTypeEnum类型的值,用于指定在打开一个记录集时所用的光标类型,见表4-5。
表4-5 打开记录集的光标类型
LockType:可选参数,是一个adoLockTypeEnum类型的值,用于指定在打开一个记录集时所用的并发锁定类型,见表4-6。
表4-6 打开记录集中的并发锁定类型
Options:可选参数,用于指定Source中的值的类型。
(5)Close()函数。
Close()函数用于关闭记录集。Close()函数原型如下:
HRESULT Close();
此函数不带任何参数。
(6)AddNew()函数。
AddNew()函数用于在记录集中添加一条新记录。AddNew()函数原型如下:
HRESULT AddNew(const _variant_t& FieldList = vtMissing, const _variant_t& Values = vtMissing);
参数说明:
FieldList:可选参数,用于指定一个字段的名字、序号或者名字、序号的数组。
Values:可选参数,用于指定一个字段或者字段数组的值。如果FieldList是一个数组,那么此参数也应当是一个数组。如果这两个数组的元素个数不同,就会产生错误。另外,这两个数组的值必须匹配。
(7)Delete()函数。
Delete()函数用来删除记录集中的当前记录。Delete()函数原型如下:
HRESULT Delete(enum AffectEnum AffectRecords);
参数说明:
AffectRecords:是一个AffectEnum类型的值,用来确定有多少行被删除。此值可以取的常数值如下:
AffectCurrent:缺省值,只删除当前记录。
AffectGroup:删除满足当前过滤器的所有记录,此时必须将Filter属性设为合法的预定义的常数值。
(8)Update()函数。(www.xing528.com)
Update()函数将当前对记录集的改动保存到数据源中,完成对数据源的更新。Update()函数原型如下:
HRESULT Update(const _variant_t & Fields = vtMissing, const _variant_t & Values = vtMissing);
参数说明:
Fields:可选参数,是_variant_t类型的值,此参数中包含了要更新的字段名称或字段序号,也可以是字段名称或字段序号数组。
Values:可选参数,是_variant_t类型的值,此参数代表了要更新的字段的新值或新值的数组。
当Update()函数要更新的是字段值数组时,Fields和Values中的数组元素个数必须相同,并且这两个数组的值必须一一对应。
(9)UpdateBatch()函数。
UpdateBatch()函数用于对更新的命令进行批量处理,它对记录集的变化进行缓存,直至调用UpdateBatch()函数对变化进行批量更新。UpdateBatch()函数原型如下:
HRESULT UpdateBatch(enum AffectEnum AffectRecords);
参数说明:
AffectRecords:是一个AffectEnum类型的值,用来确定UpdateBatch()函数所影响的记录数。AffectRecords可以取得的常数值如下所示:
adAffectCurrent:只更新当前记录未提交的改变。
adAffectGroup:更新满足当前过滤器的记录中未提交的改变。
adAffectAll:缺省值,更新当前所有未提交的改变。
(10)CancelUpdate()函数。
CancelUpdate()函数用于取消更新前所作的改变。CancelUpdate()函数原型如下:
HRESULT CancelUpdate();
此函数不带任何参数。
CancelUpdate()函数用于取消对当前记录的改变或者放弃新添加的记录。如果在调用Update()函数后,就无法取消改变。
如果在调用CancelUpdate()函数前未对当前记录进行改变,将出现错误。
(11)CancelBatch()函数。
CancelBatch()函数用于取消数据源中未提交的批量改变。CancelBatch()函数原型如下:
HRESULT CancelBatch(enum AffectEnum AffectRecords);
参数说明:
见UpdateBatch()函数的参数说明。
(12)GetRows()函数。
GetRows()函数用于获得记录集中的多行数据,并将获得数据写入数组中。GetRows()函数原型如下:
此函数的参数的意义如下:
Rows:long类型的数值,指定要获得记录的数目。
Start:可选参数,是一个_variant_t类型的书签值,指定起始记录的位置。
Fields:存放着要查询的字段名称或者字段序号、字段名数组或者字段序号数组。如果不指定此参数,则查询所有字段的值。
(13)Requery()函数。
Requery()函数重新执行以前执行过的命令,重新获得记录集。Requery()函数原型如下:
HRESULT Requery(long Options);
参数说明:
Options:可选参数,是进行此操作的屏蔽位。如果此参数被设为adExecuteAsync,则此操作将异步执行,并且在操作执行完后,发出RecordsetChangeComplete事件。
使用Requery()函数对数据源重新执行原来的命令,从而获得新的记录集对象。调用此函数相当于重新执行了Close()函数和Open()函数,并获得新的记录集对象,如果此时正在编辑记录集或者添加新记录,就会产生错误。
(14)Clone()函数。
Clone()函数用来产生一个记录集对象,其中包含着当前记录集对象的所有数据。Clone()函数原型如下:
_RecordsetPtr Clone(enum adoLockTypeEnum LockType );
参数说明:
LockType:可选参数,是一个adoLockTypeEnum类型的值,指定了要复制的记录集对象的锁定类型。LockType的取值可以是下列常量之一:
adLockUnspecified:此常数是缺省值,要复制的记录集对象的锁定类型同原记录集对象的锁定类型相同。
adLockReadOnly:要复制的记录集对象是只读的。
Clone()函数的返回值是一个记录集对象指针。
2. 记录集对象的属性
记录集对象的属性用于设置或者获得关于记录集的当前状态的信息。这些属性见表4-7。
表4-7 记录集对象的属性
续表
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。