还想问一下,如果数据库对并发的同步操作有控制,ADO控件访问这些数据库也产生并发操作同一数据,需要注意些什么吗?比如更新,插入查询多个客户锻并发访问了同一个具体数据等。

解决方案 »

  1.   

    LockType 是锁定类型。(1)(缺省)游标是只读的。不允许更新。(2)保守式并发。(3)基于行 ID 的开放式并发。(4)基于行值的开放式并发。(5) 开放式批处理方式操作。 
    详情可参考MSDN
      

  2.   

    Delphi 5, newest ADO, SQL Server 2000:   ADOConn:=TADONonnection.Create(self);
       ADOConn.ConnectionString:=ConnStr;
       ADOConn.LoginPrompt:=False;
       { Connection timeout is used both when connecting and when executing
         an Open; call (Open is called when Active is set to TRUE). NOT CommandTimeout }
       ADOConn.ConnectionTimeout := TIMEOUT; // 10*60
       ADOConn.Connected:=True;   ADOQuery:=TADOQuery.Create(self);
       ADOQuery.CursorType := ctOpenForwardOnly;
    //    ADOQuery.LockType := ltOptimistic;  <---- This works
       ADOQuery.LockType := ltReadOnly;    <---- This does NOT work
       ADOQuery.CursorLocation := clUseServer;
       ADOQuery.SQL.Text:=Job.SQL_Query;   ADOQuery.Connection:=ADOConn;
       ADOQuery.Active:=True;
      

  3.   

    ADO控件没有ADO对象灵活,不过ADO控件的用法很简单,你可看看MSDN,功能也挺强大。
      

  4.   

    LockType   可选。确定提供者打开 Recordset 时应该使用的锁定(并发)类型的 LockTypeEnum 值,可为下列常量之一(参见 LockType 属性可获得详细信息)。常量 说明 
    AdLockReadOnly (默认值)只读 — 不能改变数据。 
    AdLockPessimistic 保守式锁定(逐个) — 提供者完成确保成功编辑记录所需的工作,通常通过在编辑时立即锁定数据源的记录。 
    AdLockOptimistic 开放式锁定(逐个) — 提供者使用开放式锁定,只在调用Update 方法时才锁定记录。 
    AdLockBatchOptimistic 开放式批更新—用于批更新模式(与立即更新模式相对)。 http://images.163.com/images/it/books/ado/ado/mdmthrstopen.htm
      

  5.   

    LockType   可选。确定提供者打开 Recordset 时应该使用的锁定(并发)类型的 LockTypeEnum 值,可为下列常量之一(参见 LockType 属性可获得详细信息)。常量 说明 
    AdLockReadOnly (默认值)只读 — 不能改变数据。 
    AdLockPessimistic 保守式锁定(逐个) — 提供者完成确保成功编辑记录所需的工作,通常通过在编辑时立即锁定数据源的记录。 
    AdLockOptimistic 开放式锁定(逐个) — 提供者使用开放式锁定,只在调用Update 方法时才锁定记录。 
    AdLockBatchOptimistic 开放式批更新—用于批更新模式(与立即更新模式相对)。 支持,这些很多参考手册上都是有的:)