我用sqldataadapter去更新数据,有个问题比较棘手,就是用户一,用户二同时取了同一个表的原始数据,用户二修改ID为1的数据,然后保存到数据库,用户一要把ID为1的记录删除,在客户端中的DATASET中操作过后,传回数据库用sqldataadapter保存,出现并发冲突,这个怎样去解决?

解决方案 »

  1.   

    这个问题我曾经问过了!
    http://community.csdn.net/Expert/topic/3902/3902531.xml?temp=.4470941解决这个问题,微软提供这个解决方案的!
    http://www.microsoft.com/china/MSDN/library/data/dataAccess/DataConcurrency.mspx
      

  2.   

    TO:hchxxzx(NET?摸到一点门槛) 
    这里有个问题,在数据库中多3个字段(是否锁定,锁定人,锁定时间),这种情况是保证每个人操作时都成功才有效,如果某个人操作过程中掉线或者是其他原因,导致表已经锁定,则其他人就无法更新了
    TO: wnlovezxm(大垃圾人) 
    请教怎样用静态变量和互斥类型?
      

  3.   

    可以考虑采用微软的SmartClient的想法. 不删除,采用删除标记. 如果考虑数据冗余,在服务端用个线程处理删除标记的数据.可以合理利用时间戳.
      

  4.   

    如果某个人操作过程中掉线或者是其他原因,导致表已经锁定,则其他人就无法更新了
    ------------------------
    如果你要处理的这种情况不多的话,那可以解决.
    你可以在该页面做一个定时的(settimeout)的脚本,此脚本用xmlhttp方式每隔一段时间连接另外一个页面,不断的更新着当前锁定用户的最后锁定时间(比如说5分钟一次).这样,假设此用户掉线或其他故障导致关机,那么,其他的人要进来操作时,只需要查询此记录最后一次锁定时间,假设与现有时间相比,超过5分钟,则表示此记录已经没有在锁定状态了(虽然该记录的"是否锁定"仍然是标志锁定)