CursorLocation 属性
经常出现的recordcount=-1,在这里使用aduseclient属性一般就可以解决问题了。
设置或返回游标服务的位置。
设置和返回值
设置或返回可设置为以下某个常量的长整型值。
常量 说明
adUseNone 没有使用游标服务。(该常量已过时并且只为了向后兼容才出现)。
adUseClient 使用由本地游标库提供的客户端游标。本地游标服务通常允许使用的许多功能可能是驱动程序提供的游标无法使用的,因此使用该设置对于那些将要启用的功能是有好处的。AdUseClient 具有向后兼容性,也支持同义的 adUseClientBatch。
adUseServer 默认值。使用数据提供者的或驱动程序提供的游标。这些游标有时非常灵活,对于其他用户对数据源所作的更改具有额外的敏感性。但是,Microsoft Client Cursor Provider(如已断开关联的记录集)的某些功能无法由服务器端游标模拟,通过该设置将无法使用这些功能。
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,分述如下:
--------------------------------------------------------------
常数 常数值 说明
-------------------------------------------------------------
adOpenForwardOnly 0 缺省值,启动一个只能向前移动的游标(Forward Only)。
adOpenKeyset 1 启动一个Keyset类型的游标。
adOpenDynamic 2 启动一个Dynamic类型的游标。
adOpenStatic 3 启动一个Static类型的游标。
-------------------------------------------------------------
以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下列表说明他们之间的区别。
记录集是否可写不是由光标类型决定的,而是由锁类型决定的。第一种光标(adOpenForwardOpnly)只能向前移动,第二种光标(adOpenStatic)可自由移动,确实如此。但它们只决定了记录集是静态的,而不是“只读”的。而后面两种也不是“可读写”的,而是“动态”的。
记录集分动态、静态两种,区别在于,记录集在打开的过程中,是否实时反映用户对数据库的更改(可能是当前访问数据集的用户,也可能是其他用户)。
adOpenForwardOnly和adOpenStatic这两种属静态类型,当前用户打开记录集后,记录集就保持不变一直到关闭后再次打开它。在这过程中如果数据库中的相应记录发生改变,在当前用户是看不到的。
adOpenDynamic和adOpenKeyset这两种则属动态类型,记录集会反映出数据库中相应记录的更改,他们两者的区别在于:adOpenDynamic是完全动态的,数据库记录的更新、删除、添加都会体现在当前用户所打开的记录集中;而adOpenKeyset则保持当前记录集的个数不变,它只体现更新操作,不体现删除和添加操作。
-------------------------------------------------------------
Recordset属性 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic
-------------------------------------------------------------
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等,分述如下:
-------------------------------------------------------------
常数 常数值 说明
--------------------------------------------------------------
adLockReadOnly 1 缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法
adLockPrssimistic 2 当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。
adLockOptimistic 3 当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。
adLockBatchOptimistic 4 当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、
删、改的操作。
分享到:
相关推荐
在`rs.Open`方法中,第二个参数(`adOpenStatic`)指定了游标类型为静态,第三个参数(`adLockOptimistic`)指定了锁定模式为乐观锁定,这意味着默认情况下,多个用户可以同时编辑数据,但在保存更改时会检查冲突。...
adLockOptimistic开放式锁定(逐个) — 提供者使用开放式锁定,只在调用Update 方法时才锁定记录 Set MSHFlexGrid1.DataSource = rs MSHFlexGrid1.ColWidth(0) = 0 '返回或设置指定带区中的列宽 rs.Close ...
Open方法原型为Open(Source, ActiveConnection, CursorType, LockType, Options),其中各个参数分别指定了数据源、连接、游标类型、锁定类型和选项。 如果开发者只是进行数据的读取操作,而不涉及更新,通常使用...
- 属性:Fields提供对记录集中的字段的访问,BOF和EOF分别表示是否位于首记录和尾记录,RecordCount表示记录数,CursorLocation定义游标的位置。 - 方法:MoveFirst、MoveLast、MoveNext、MovePrevious用于移动...
对于初学者来说,理解ADO的游标类型和锁定模式非常重要,这将直接影响到数据的读取和更新行为。例如,静态游标适用于只读操作,而动态游标则允许你看到其他用户对数据的即时更改。锁定模式则决定了在多用户环境下...
- **游标类型(CursorType)、锁定类型(LockType)、最大记录(MaxRecords)**:控制数据读取和修改的方式,如设置游标类型为静态、动态或键集驱动等,定义记录锁定的策略,限制可读取记录的数量。 - **模式(Mode)、提供...
这里的参数`CursorType`和`LockType`分别用于指定游标类型和锁定类型。游标类型有四种,包括: - `AdOpenForwardOnly`(只进游标):只能向前移动,效率高但不支持记录修改。 - `AdOpenKeyset`(键集游标):可上...
`Open`方法的参数包括SQL命令、连接对象、打开模式、锁定类型及命令类型。 - **遍历查询结果**: - **代码示例**: ```cpp while (!pRs->adoEOF) { CString strName = pRs->GetCollect("UserName").bstrVal; ...
6. **游标和锁定**:Recordset的CursorLocation和LockType属性可以设置游标类型和锁定策略,影响数据的读取方式和并发控制。 7. **错误处理**:ADO提供Error集合,当发生错误时,可以通过检查Error对象获取错误信息...
8. 游标类型和锁定策略: - Recordset的CursorType属性可设置游标类型,如adOpenForwardOnly(只进式)、adOpenKeyset(键集式)、adOpenDynamic(动态式)和adOpenStatic(静态式)。LockType属性则可以设置锁定...
Recordset的游标类型(如向前只读、动态、静态或键集)和锁定策略(如独占、共享或批更新)会影响其行为。这些可以在Open方法中指定,如`LockType`和`CursorType`参数。 9. **关闭和释放资源** 使用完毕后,记得...
6. **游标和锁定**:Recordset对象的游标类型决定了你能如何浏览和修改数据。锁定策略则决定了数据的并发控制,比如是读已提交(Read Committed)还是串行化(Serializable)。 7. **参数化查询**:为了防止SQL注入...
设置`CommandTimeout`属性以控制超时时间,`PutCursorLocation`方法设定游标位置为客户端。接着,构建一个包含连接信息的字符串,如DSN、服务器地址、用户名、密码等,并用`Open`方法打开连接。由于ADO本身不直接...
此外,文档中提及的“adOpenKeyset”和“adLockPessimistic”这两个参数在调用Recordset的Open方法时有特殊的作用,分别表示记录集打开时使用的是键集游标类型和悲观锁定方式。键集游标允许用户访问由其他用户创建的...
文档可能详细解释了如何通过Recordset对象移动数据指针,如何更新和删除记录,以及如何处理游标和锁定策略。 “VC++ ADO开发实践之六.doc”和“VC++ ADO开发实践之二.doc、之三.doc”可能涵盖了一些高级主题,如...
10. 游标和锁:Recordset的CursorType属性定义游标类型,影响是否能前后移动记录、能否看到其他用户对数据的更改等。LockType属性定义锁定策略,决定数据的并发控制。 11.事务处理:对于需要确保数据完整性的多步骤...
- **用途**:指定记录集的游标类型,例如动态游标 (`adOpenDynamic`) 或静态游标 (`adOpenStatic`)。 #### 五、`Connection` 对象的方法 `Connection` 对象提供了多种方法用于管理连接和事务操作: 1. **...