我遇到一个问题,我们的系统是三层架构的,现遇到一个问题。我在修改一套记录的时候,
体统提示有其他人正在修改。其实并没有人在修改。请问各位大虾,再何种情况下会出现
这种情况,而且并不是每次都会遇到这种情况。郁闷!!!!!!!!
请大家帮忙。
Server端,我们用的有TDataSetProvider,TQuery,TUpdateSQL
Client端,TDCOMConnect,TClientDataSet
数据库:SQL2000

解决方案 »

  1.   

    用Qery直接連接數據庫,還是。
      

  2.   

    我是三层架构的,在客户端邦定数据的,数据是server端从数据库里查来的
      

  3.   

    記得clientdataset 先CLOSE 然後才執行 
    不是的話 把處理發送SQL命令的代碼貼出來
      

  4.   

    这种情况通常是更新数据到后端数据库后,没有用cds的refresh更新本地的数据,致使前后端数据不同步造成的.
      

  5.   

    锁的类型有三:共享锁,更新锁,独占锁
    共享锁可以和其他共享锁,更新锁兼容共存
    只有独占锁是不和其他兼容的,所以只要数据上有独占锁,其他用户则不能读写
    在缺省情况下,数据库的默认的锁定粒度是数据页,如果想使其变成表级锁
    可以用holdlock关键字,比如语句
    update titles set ...   holdlock
    这个语句就起用了表级锁,在用户更新这个数据表的时候,其他用户不能读写
    解锁只能等对这个表操作的事务完成了,锁就解开了.
      

  6.   

    在开始一个事务 begintransaction
      一定要执行到 commit  或rollback 否则就会出问题
      

  7.   

    在每张表里加一个update_time时间字段,
    select的时候把这个update_time读下来,
    在保存之前,再次select,看update_time变了没,
    如果没变,则保存,并把getdate()的时间更新到update_time.