DAO介绍(三)
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 的动态游标。
来源:http://www.bianceng.cn/VBjc/vbsjk/sj3.htm