如题:
  我想实现:
写个程序例如向数据库录入数据的程序;然后此程序在多台机器上运行,但录入的数据更新到服务器中的同一个数据库;问题是这些不同机器上的录入程序如何保持数据库的同步访问?例如在机器A有人录入R这条数据那么在机器B如何同步此条记录?

解决方案 »

  1.   

    个人认为这做不到.
    必须要A保存R这条记录后,B才能使用R这条记录.
      

  2.   

    当开启Recordset对象时,您也可以用LockType属性指定锁定的型态: 1:唯读(ReadOnly),不允许更新,为预设值。 
    2:悲观锁定( Pessimistic lock),在编辑Recordset资料或使用AddNew方法,一开始执行就立即锁定此记录或包含资料记录的资料页,并维持锁定直到使用Update方法将变更写回到资料库为止。 
    3:乐观锁定(Optimistic lock),使用Update方法将变更写回到资料库时才锁定此记录。 
    4:批次乐观锁定(Batch Optimistic lock),使用UpdateBatch方法将多笔变更的记录批次写回到资料库时,才锁定此批记录。 当您使用悲观锁定(Pessimistic Lock)时,一旦编辑Recordset资料或呼叫了AddNew方法时,就会锁定包含目前编辑RecordSet的资料对应页,直到明确地确认(Commit)或取消这个RecordSet的变更后,它才会释放这个锁定。 
    悲观锁定的主要优点,是取得锁定之后,只要RecordSet还被锁定着,就不会发生任何锁定冲突。由于一个使用者开始编辑RecordSet后,其他使用者就无法改变它,所以悲观锁定是保证应用程式能读取到目前最新资料的唯一方法。 
    悲观锁定的缺点,是在编辑和锁定该RecordSet当中,包含该RecordSet的整个资料对应页都会被锁定。如果当使用者开始编辑和锁定RecordSet后,在RecordSet被锁定期间过了很久才明确地确认(Commit)或取消这个RecordSet的变更,就将产生一个问题,这不仅锁定了使用者正在编辑的RecordSet,而且还可能会锁定存在该被锁定资料对应页内其它的RecordSet。 
    当您使用乐观锁定(Optimistic Lock)时,只会在使用Update方法变更RecordSet时,才锁定该资料对应页,所以能使锁定的时间为最短,这是乐观锁定的主要优点。 
    乐观锁定的缺点,是当使用者开始编辑RecordSet时,无法确定更新是否会成功。如果另一个使用者改变了第一个使用者正在编辑的RecordSet,那么建立在乐观锁定的更新将会失败。 
      

  3.   

    按照楼上:oyljerry所说,我想采取乐观锁定,但此琐定的代码是如何实现的?
    假设我用的是ADO那么,是不是在使用了RecordSet的addnew获delete方法后调用update就是所说的乐观锁定?
      

  4.   

    问题是此琐用代码如何实现,在数据库里还是在VC程序里,能否给点步骤的简单代码(ado)