Ado 问题

liul17 2003-09-11 05:03:09
大家帮忙解释一下CursorType和LockType的具体用途
我现在常用的是
rd.Open sQueSQL, cnDB, adOpenDynamic, adLockReadOnly

现在概念比较模糊不知道什么时候这两个分别都该用哪个?

谢谢请分别说明一下(CurorType 和 locktype)
如是msdn上的帮助就不必贴了我全看过了只是不知道在具体情况中什么时候用哪个
请对不同的值分别举几个例子 谢谢!!!

如:rd.Open sQueSQL, cnDB, adOpenDynamic, adLockReadOnly 中
adOpenDynamic的实际用途 若换成别的会怎么样
...全文
29 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
liul17 2003-09-17
  • 打赏
  • 举报
回复
up
vv1vv 2003-09-15
  • 打赏
  • 举报
回复
cursortype属性用到的常数
常数 含义
adopenforwardonly 提供单向移动游标和只读recordset(默认值)
adopendynamic 提供可滚动游标,可显示其他用户对recordset所做的改动(包括添加新记录)
adopenkeyset 提供可滚动游标,只隐藏其他用户所做的改动,类似于dynaset类型的dao.recordset
adopenstatic 提供一个位于recordset静态拷贝上的可滚动游标,类似于snapshot类型的dao.recordset,但多了可更新特性

liul17 2003-09-15
  • 打赏
  • 举报
回复
----批更新方式一般是客户端游标、切断记录集
这是描述批更新方式的
----Update只更新当前记录(本地)
而批更新可更新到服务器
----用切断记录集可能存在本地记录与数据库记录数据冲突的问题
不用 updatebatch
因此要想每次都能更新到服务器必须用updatebatch

’以上是我对 viena(晓琴) 的话的理解是这个意思吗? 我对这些理论的研究的确不深
’请各位指正!!!谢谢!!
liul17 2003-09-14
  • 打赏
  • 举报
回复
----批更新方式一般是客户端游标、切断记录集
这是描述批更新方式的
----Update只更新当前记录(本地)
而批更新可更新到服务器
----用切断记录集可能存在本地记录与数据库记录数据冲突的问题
不用 updatebatch
因此要想每次都能更新到服务器必须用updatebatch

’以上是我对 viena(晓琴) 的话的理解是这个意思吗? 我对这些理论的研究的确不深
’请各位指正!!!谢谢!!
viena 2003-09-12
  • 打赏
  • 举报
回复
批更新方式一般是客户端游标、切断记录集,Update只更新当前记录(本地),UpdateBatch才更新到数据库中。用切断记录集可能存在本地记录与数据库记录数据冲突的问题,除非在你编辑期间,没有别的用户更新数据库。
liul17 2003-09-12
  • 打赏
  • 举报
回复
to lihonggen0:
谢谢你的回答!
批更新方式是怎么个更新呢?
我更新一般用SQL语句 update ... 或
rs!xxx = xxx
rs.update

批更新指的是什么?
lihonggen0 2003-09-11
  • 打赏
  • 举报
回复
中秋快乐!
下班,走人,回家!
lihonggen0 2003-09-11
  • 打赏
  • 举报
回复



如果光是读取(不修改数据),这样最快:
Rs.Open "select * from employees", Cn, AdOpenForwardOnly, adLockReadOnly



如果要修改数据,我一般这样:

Rs.Open "select * from employees", CN, adOpenDynamic, adLockOptimistic

或者:
(批更新方式)
Rs.Open "select * from employees", Cn, adOpenDynamic, adLockBatchOptimistic

liul17 2003-09-11
  • 打赏
  • 举报
回复
我想要的是实际的用途
比如:
只读时用 adReadonly (这个我知道但其它的不太清楚)
首先谢谢楼上的回答 我不想看msdn上的帮助 想知道大家的实际理解!!!!!!!
真的谢谢!!
lihonggen0 2003-09-11
  • 打赏
  • 举报
回复
CursorType 属性


指示在 Recordset 对象中使用的游标类型。


常量 说明
AdOpenForwardOnly 仅向前游标,默认值。除了只能在记录中向前滚动外,与静态游标相同。当只需要在记录集中单向移动时,使用它可提高性能。

AdOpenKeyset 键集游标。尽管从您的记录集不能访问其他用户删除的记录,但除无法查看其他用户添加的记录外,键集游标与动态游标相似。仍然可以看见其他用户更改的数据。

AdOpenDynamic 动态游标。可以看见其他用户所作的添加、更改和删除。允许在记录集中进行所有类型的移动,但不包括提供者不支持的书签操作。

AdOpenStatic 静态游标。可以用来查找数据或生成报告的记录集合的静态副本。另外,对其他用户所作的添加、更改或删除不可见。


说明

使用 CursorType 属性可指定打开 Recordset 对象时应该使用的游标类型。Recordset 关闭时 CursorType 属性为读/写,而 Recordset 打开时该属性为只读。

如果将 CursorLocation 属性设置为 adUseClient 则只支持 adUseStatic 的设置。如果设置了不支持的值,不会导致错误,将使用最接近支持的 CursorType。

如果提供者不支持所请求的游标类型,提供者可能会返回其他游标类型。打开 Recordset 对象时,将更改 CursorType 属性使之与实际使用的游标匹配。要验证返回游标的指定功能,请使用 Supports 方法。关闭 Recordset 后,CursorType 属性将恢复为最初的设置。

下表说明每个游标类型所需的提供者功能(由 Supports 方法常量标识)。

对于该 CursorType 的某Recordset 对于所有这些常量, Supports 方法必须返回 True

AdOpenForwardOnly 无

AdOpenKeyset AdBookmark、adHoldRecords、adMovePrevious、adResync

AdOpenDynamic adMovePrevious

AdOpenStatic adBookmark, adHoldRecords, adMovePrevious, adResync


注意 尽管对于动态游标和仅向前游标 Supports(adUpdateBatch) 可能是真,但对于批处理更新应使用键集游标或静态游标。请将 LockType 属性设置为 adLockBatchOptimistic,然后将 CursorLocation 属性设置为 adUseClient 以启用批更新需要的 OLE DB 游标服务。

远程数据服务用法 当用于客户端 (ADOR) Recordset 对象时,只能将 CursorType 属性设置为 adOpenStatic。
lihonggen0 2003-09-11
  • 打赏
  • 举报
回复
locktype属性用到的常数
常数 含义
adlockrecordonly 指定只读访问(默认值)
adlockbatchoptimistic 使用批量更新模式而不是默认的立即更新模式
adlockoptimistic 使用乐观锁(仅在更新过程中才锁定记录或页面)
adlockpessimistic 使用悲观锁(编辑或更新整个过程中均锁定记录或页面)
lihonggen0 2003-09-11
  • 打赏
  • 举报
回复
cursortype属性用到的常数
常数 含义
adopenforwardonly 提供单向移动游标和只读recordset(默认值)
adopendynamic 提供可滚动游标,可显示其他用户对recordset所做的改动(包括添加新记录)
adopenkeyset 提供可滚动游标,只隐藏其他用户所做的改动,类似于dynaset类型的dao.recordset
adopenstatic 提供一个位于recordset静态拷贝上的可滚动游标,类似于snapshot类型的dao.recordset,但多了可更新特性

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧