查看: 155  |  回复: 0
  SQL rs.Open sql, conn, 3, 3等的疑问
楼主
发表于 2024年10月10日 15:14

RecordSet中的open完全的语法是 
SecordSet.Open Source,ActiveConnection,CursorType,LockType,Options  

例如: rs.open sql,conn,1,3 

CursorType是 
adOpenForwardOnly 0 默认游标类型, 为打开向前游标, 只能在记录集中向前移动. 
adOpenKeyset 1 打开键集类型的游标, 可以在记录集中向前或向后移动. 如果其他用户修改或删除了一条记录, 记录集中将反映这个变化. 但是, 如果其他用户添加了一条新记录, 新记录不会出现在记录集中. 
AdOpenDynamic 2 打开动态游标, 可以在记录集中向前或向后移动. 其他用记造成的记录的任何变化都将在记录集中有所反映. 
adOpenStatic 3 打开静态游标, 可以在记录集中向前或向后移动. 但是, 静态游标不会对其他用户造成的记录变化有所反映. 

LockType是 
adLockReadOnly 1 只读锁定, 指定不能修改记录集中的记录. 
adLockPrssimistic 2 保护式锁定, 指在编辑一个记录时, 立即锁定它. 
adLockOptimistic 3 开放式锁定, 指定只有调用记录集的 Update() 方法时才能锁定记录. 
adLockBatchOptimistic 4 开放式批锁定, 指定记录只能成批地更新. 

最常用的两种方法: 
rs.open sql,conn,1,1 '读取显示数据时用,只读 
rs.open sql,conn,1,3 '更新或插入数据时用,读写 ,效率比3,3更高。


以下是其它网友的补充

recordset.Open Source,ActiveConnection,CursorType,LockType,Options

可以写成:
rs.open SQL语句,conn对象,3(游标类型),2(锁定方法)

Source
Recordset对象可以通过Source属性来连接Command对象。Source参数可以是一个Command对象名称、一段SQL命令、一个指定的数据表名称或是一个Stored Procedure。假如省略这个参数,系统则采用Recordset对象的Source属性。

ActiveConnection
Recordset对象可以通过ActiveConnection属性来连接Connection对象。这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。

CursorType
Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:


常数常数值 说明 
adOpenForwardOnly0缺省值启动一个只能向前移动的游标(Forward Only)
adOpenKeyset1启动一个Keyset类型的游标
adOpenDynamic2启动一个Dynamic类型的游标
adOpenStatic3启动一个Static类型的游标


以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下列表说明他们之间的区别。



Recordset属性adOpenForwardOnlyadOpenKeysetadOpenDynamicadOpenStatic
AbsolutePage 不支持 不支持 可读写可读写
AbsolutePosition不支持不支持可读写可读写
ActiveConnection可读写可读写可读写可读写
BOF只读只读只读只读
Bookmark不支持不支持可读写可读写
CacheSize可读写可读写可读写可读写
CursorLocation可读写可读写可读写可读写
CursorType可读写可读写可读写可读写
EditMode只读只读只读只读
EOF只读只读只读只读
Filter可读写可读写可读写可读写
LockType可读写可读写可读写可读写
MarshalOptions可读写可读写可读写可读写
MaxRecords可读写可读写可读写可读写
PageCount不支持不支持只读只读
PageSize可读写可读写可读写可读写
RecordCount不支持不支持只读只读
Source可读写可读写可读写可读写
State只读只读只读只读
Status只读只读只读只读
AddNew支持支持支持支持
CancelBatch支持支持支持支持
CancelUpdate支持支持支持支持
Clone不支持不支持不支持不支持
Close支持支持支持支持
Delete支持支持支持支持
GetRows支持支持支持支持
Move不支持支持支持支持
MoveFirst支持支持支持支持
MoveLast    不支持支持支持支持
MoveNext支持支持支持支持
MovePrevious不支持支持支持支持
NextRecordset支持支持支持支持
Open支持支持支持支持
Requery支持支持支持支持
Resync不支持不支持支持支持
Supports支持支持支持支持
Update支持支持支持支持
UpdateBatch支持支持支持支持


其中NextRecordset方法并不适用于Microsoft Access数据库。

LockType
Recordset对象Open方法的LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以Recordset对象的LockType属性为预设值。LockType参数包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:


常数常数值说明 
adLockReadOnly1缺省值Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法
adLockPrssimistic2当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性
adLockOptimistic3当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作
adLockBatchOptimistic4当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、删、改的操作


您需要登录后才可以回帖 登录 | 立即注册
【本版规则】请勿发表违反国家法律的内容,否则会被冻结账号和删贴。
用户名: 立即注册
密码:
2020-2024 MaNongKu.com