如何解决ADO访问SQL Server 2000时,多个客户端可能产生数据库访问冲突的问题? 如题。比如,有客户端A和B,当他们同时读取数据库中同一个表的记录时,可以正常访问;但如果A准备更改SQL Server中某个表的记录内容时,如何暂时禁止B或其他客户端对该表记录的读取和更新? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 事务处理不是只能用来保证一系列更新操作的完整性吗,其中任何一个操作失败,可以提供回滚之前所作更改的功能,如何用来解决冲突呢?我不太懂数据库,请大家指点一下。我想解决一种情况下的问题,客户端A要对表中某一字段的值进行累加1的操作,如10->11;恰好此时,另一个客户端B也需要进行同样的操作,最后正确的结果当然是10->11->12,可是因为是同时进行的,所以客户端A读取的当前值为10,就累加1后,更改字段的值为11;客户端B上也发生了完全相同的一次操作,最后的结果就是字段的值被更改为11了两次,而不是我们希望的结果。这种数据库访问冲突的问题如何处理? 怎么加锁?可否请楼上兄弟给个用ADO实现的大概的代码供参考一下,或有没有相关的文档介绍?具体的我可以自己研究,先拜谢了! 你用ado打开表的时候,不是有关于lock的选项吗?看msdn就知道了 谢谢楼上各位的提点,找到解决方法了。下面整理一下,希望以后对其他朋友有帮助。当我们更新数据库中记录之前,会先通过_RecordsetPtr智能指针调用下面的方法打开想要更新的记录(集):HRESULT Recordset15::Open ( const _variant_t & Source, const _variant_t & ActiveConnection, enum CursorTypeEnum CursorType, enum LockTypeEnum LockType, long Options )然后再调用Update方法实现更新记录内容操作。而要解决本贴中提到的冲突问题,可以在上面Open方法中参数4中,把LockType指定为adLockPessimistic(简要说明:悲观锁定,也有的资料会译为保守式并发。使用此参数时,从你Open方法所打开的记录集中(注意:不是数据库中的)任一字段内容被更改后,一直到调用Update方法实际更新数据库记录集内容之前,数据库中此记录集是处于锁定状态的,如果其他进程或客户端也试图更新数据库中此记录集内容的话,就会出错。)或adLockOptimistic(简要说明:乐观锁定,有的资料会译为开放式并发。使用此参数时,与前面adLockPessimistic相比只有一点区别,即仅在你调用Update方法对数据库中记录集进行更新时才锁定相应记录集,其他二者相同,Update方法成功调用后,即自动解除记录集的锁定。)。小子在此感谢大家的指点!!结贴。 凹凸平面的纹理映射 有关用c++模拟进程调度的问题…………急求解决 请问如何在CSTATIC控件中加入滚动条 100分求助:请问怎样在VC6.0中输出一个带文字的表格到word xp 中,如果能输出图片就更好了??? 对话框中加入Crichedit后,字体不按设计时的大小显示,怎样才能让对话框和字体的大小跟设计时一样? 如何卸载其他进程加载的A.dll? 位图的资料? 高分请教,如何使用install shield安装一个驱动程序,并且使他成为一个系统服务 注册窗口类Instance问题 微软论证 请教有关初始化程序放置位置的问题 怎样用图形组成流程图,自动生成代码后编译运行
我想解决一种情况下的问题,客户端A要对表中某一字段的值进行累加1的操作,如10->11;恰好此时,另一个客户端B也需要进行同样的操作,最后正确的结果当然是10->11->12,可是因为是同时进行的,所以客户端A读取的当前值为10,就累加1后,更改字段的值为11;客户端B上也发生了完全相同的一次操作,最后的结果就是字段的值被更改为11了两次,而不是我们希望的结果。这种数据库访问冲突的问题如何处理?