3)type、options 和 lockedits 参数
type参数可选表
可选参数 |
dbOpenDynaset |
dbOpenSnapshot |
dbOpenForwardOnly |
dbOpenDynamic |
dbOpenTable | |
参数说明 |
Recordset对象表类型 |
Recordset对象快照类型 |
Recordset对象仅向前类型 |
Recordset对象动态类型 |
Recordset对象动态集类型 | |
options参数可选表
可选参数 |
dbAppendOnly |
dbReadOnly |
dbSeeChanges |
dbDenyWrite |
dbDenyRead |
参数说明 |
只能新增 |
只读 |
编辑锁定 |
禁止其它用户写 |
禁止其它用户读 |
备注 |
仅对动态集 |
仅对Microsoft Jet 工作区 |
仅用于动态集类型的记录集 |
仅用于Recordset对象 |
仅用于表类型的记录集 |
可选参数 |
dbForwardOnly |
dbSQLPassThrough |
dbConsistent |
dbInconsistent |
|
参数说明 |
仅向前快照 |
source是SQL |
一致更新 |
不一致更新 |
|
备注 |
仅用于Microsoft Jet数据源 |
仅用于快照 |
仅用于动态集类型和快照类型 |
仅用于动态集类型和快照类型 |
|
lockedits 参数可选表
可以使用 lockedits 参数控制对记录集的锁定。可用以下常数。
常数 |
描述 |
dbReadOnly |
禁止用户对记录集进行修改 |
DbPessimistic |
在多用户环境中,使用保守式锁定来决定修改记录集的方式 |
DbOptimisticValue |
使用基于行值而非行 IDs 的优化并发。仅用于 ODBCDirect 数据源 |
4)Recordset对象的类型
Recordset 对象有五种类型:表、动态集、快照、动态和仅向前
表类型的 Recordset 对象是指当前数据库中的本地表或者 Microsoft Jet 创建的外部数据库。在创建表类型的记录集时,数据库引擎打开实际表,后续的数据操作都是直接对基本表进行的。只能对单个的表打开表类型的记录集,而不能对联接或者联合查询打开。 如果使用基本表创建的索引,就可以对表类型的 Recordset 对象进行索引。与其它类型的 Recordset 对象相比,表类型的搜索与排序速度最快。定位特定的记录时,Seek 方法要快于 Find 方法。
动态集类型的 Recordset 对象可以是本地的或者链接的表,也可以是返回的行查询结果。它实际上是对一个或者几个表中的记录的一系列引用。可用动态集从多个表中提取和更新数据,其中包括链接其它数据库中的表。动态集类型具有一种与众不同的特点:不同数据库的可更新联接。利用这种特性,可以对不同类型的数据库中的表进行可更新的联接查询。
动态集和它的基本表可以互相更新。如果动态集中的记录发生改变,同样的变化也将在基本表中反映出来。在打开动态集的时候,如果其他的用户修改了基本表,那么动态集中也将反映出被修改过的记录。动态集类型是最灵活的 recordset 类型,也是功能最强的。不过,它的搜索速度与其它操作的速度不及表类型的 Recordset。
快照类型的 Recordset 对象包含的数据是固定的,它反映了在产生快照的一瞬间数据库的状态。从 Microsoft Jet 数据源得到的快照是不可更新的,从开放数据库互连 (ODBC) 数据源得到的某些快照是可以更新的,这取决于后端数据库的能力。 与动态集类型和表类型的 Recordset 对象相比,快照的处理开销较少。因此,它执行查询和返回数据的速度更快,特别是在使用 ODBC 数据源时。需要注意的是,对于 .mdb 文件,在快照中用指针表示 Memo 和 Long Binary 字段中的数据。
仅向前类型的 Recordset 对象,有时被称为“向前滚动快照”或者“仅向前快照”,提供了快照的一部分功能。它提供了最基本的 Recordset 对象功能,但是通常可以达到最快的速度。与快照类似,从 Microsoft Jet 得到的仅向前类型的 Recordset 对象是不可更新的。另外,仅向前的快照只允许在记录中向前移动,而不能向相反的方向移动。这种类型的 Recordset 对象不能被复制,而且只支持 Move 和 MoveNext 方法。
动态类型的 Recordset 对象是从一个或几个基本表中查询到的结果集,对于返回行的查询,可以在其中添加、修改或删除记录。另外,其它用户对基本表的添加、删除和修改操作也将出现在您的记录集中。这种类型对应于 ODBC 的动态游标。