大家帮忙解释一下CursorType和LockType的具体用途
我现在常用的是
rd.Open sQueSQL, cnDB, adOpenDynamic, adLockReadOnly 现在概念比较模糊不知道什么时候这两个分别都该用哪个?谢谢请分别说明一下(CurorType 和  locktype)
如是msdn上的帮助就不必贴了我全看过了只是不知道在具体情况中什么时候用哪个
请对不同的值分别举几个例子 谢谢!!!如:rd.Open sQueSQL, cnDB, adOpenDynamic, adLockReadOnly 中
adOpenDynamic的实际用途 若换成别的会怎么样

解决方案 »

  1.   

    cursortype属性用到的常数
    常数 含义 
    adopenforwardonly 提供单向移动游标和只读recordset(默认值) 
    adopendynamic 提供可滚动游标,可显示其他用户对recordset所做的改动(包括添加新记录) 
    adopenkeyset 提供可滚动游标,只隐藏其他用户所做的改动,类似于dynaset类型的dao.recordset 
    adopenstatic 提供一个位于recordset静态拷贝上的可滚动游标,类似于snapshot类型的dao.recordset,但多了可更新特性 
      

  2.   

    locktype属性用到的常数
    常数 含义 
    adlockrecordonly 指定只读访问(默认值) 
    adlockbatchoptimistic 使用批量更新模式而不是默认的立即更新模式 
    adlockoptimistic 使用乐观锁(仅在更新过程中才锁定记录或页面) 
    adlockpessimistic 使用悲观锁(编辑或更新整个过程中均锁定记录或页面) 
      

  3.   

    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 AdBook、adHoldRecords、adMovePrevious、adResync AdOpenDynamic adMovePrevious AdOpenStatic adBook, adHoldRecords, adMovePrevious, adResync 
    注意   尽管对于动态游标和仅向前游标 Supports(adUpdateBatch) 可能是真,但对于批处理更新应使用键集游标或静态游标。请将 LockType 属性设置为 adLockBatchOptimistic,然后将 CursorLocation 属性设置为 adUseClient 以启用批更新需要的 OLE DB 游标服务。远程数据服务用法   当用于客户端 (ADOR) Recordset 对象时,只能将 CursorType 属性设置为 adOpenStatic。
      

  4.   

    我想要的是实际的用途
    比如: 
    只读时用 adReadonly (这个我知道但其它的不太清楚)
    首先谢谢楼上的回答 我不想看msdn上的帮助 想知道大家的实际理解!!!!!!!
    真的谢谢!!
      

  5.   


    如果光是读取(不修改数据),这样最快:
    Rs.Open "select * from employees", Cn, AdOpenForwardOnly, adLockReadOnly 如果要修改数据,我一般这样:Rs.Open "select * from employees", CN, adOpenDynamic, adLockOptimistic或者:
    (批更新方式)
    Rs.Open "select * from employees", Cn, adOpenDynamic, adLockBatchOptimistic
      

  6.   

    to lihonggen0:
    谢谢你的回答!
    批更新方式是怎么个更新呢?
    我更新一般用SQL语句 update ... 或 
    rs!xxx = xxx
    rs.update批更新指的是什么?
      

  7.   

    批更新方式一般是客户端游标、切断记录集,Update只更新当前记录(本地),UpdateBatch才更新到数据库中。用切断记录集可能存在本地记录与数据库记录数据冲突的问题,除非在你编辑期间,没有别的用户更新数据库。
      

  8.   

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

  9.   

    cursortype属性用到的常数
    常数 含义 
    adopenforwardonly 提供单向移动游标和只读recordset(默认值) 
    adopendynamic 提供可滚动游标,可显示其他用户对recordset所做的改动(包括添加新记录) 
    adopenkeyset 提供可滚动游标,只隐藏其他用户所做的改动,类似于dynaset类型的dao.recordset 
    adopenstatic 提供一个位于recordset静态拷贝上的可滚动游标,类似于snapshot类型的dao.recordset,但多了可更新特性 
      

  10.   

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