社区
C#
帖子详情
请教并发操作的解决方案!!!
henry2002
2003-08-21 09:33:43
如果一个页面需要更新一个数据库表中的某条记录,而有两个人(A、B)同时打开了该页面并都准备修改该条记录.如果A先修改并提交,这时数据库中是A的修改结果;然后B也提交他的修改结果,这样B就会覆盖掉A先前提交的修改。如何避免这种情况的出现???
说明:现在使用b/s结构进行开发,每个库表对应一个实体类,提交修改是先构造出要修改记录对应的实体对象,然后构造update语句进行修改(where子句使用主键进行限制)
...全文
149
9
打赏
收藏
请教并发操作的解决方案!!!
如果一个页面需要更新一个数据库表中的某条记录,而有两个人(A、B)同时打开了该页面并都准备修改该条记录.如果A先修改并提交,这时数据库中是A的修改结果;然后B也提交他的修改结果,这样B就会覆盖掉A先前提交的修改。如何避免这种情况的出现??? 说明:现在使用b/s结构进行开发,每个库表对应一个实体类,提交修改是先构造出要修改记录对应的实体对象,然后构造update语句进行修改(where子句使用主键进行限制)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
NetAnt007
2004-01-10
打赏
举报
回复
http://www.microsoft.com/china/msdn/library/dv_vstechart/html/vbdatasetconflicts.asp
haipin
2004-01-10
打赏
举报
回复
http://www.microsoft.com/china/msdn/library/dv_vstechart/html/vbdatasetconflicts.asp
henry2002
2003-08-22
打赏
举报
回复
up
henry2002
2003-08-21
打赏
举报
回复
谢谢!
wolve你的方案能解决问题,但是实际编程是否可行?如果每次更新数据之前都要去数据库检查在自己读数据和更新数据之间数据库中数据是否已经被改变一方面性能上会很受影响(多访问一次数据库),另一方面如果库表字段少还好,如果字段很多那么比较一次也要很多脚本的。当然也可以通过update或delete语句后加where条件把原始数据都作为条件进行限制,但编程同样会很繁琐的。
因为这种控制不是某一两个表需要这样处理,而是所有的表基本都需要进行控制,能否有一种方法能让我在一个基类中进行统一控制?
wolve
2003-08-21
打赏
举报
回复
事务只能保持在完成原子操作之前读写问题。
你的问题是A已完成操作了,B肯定是可以进行相同的操作,难道A改了以后,所有的用户都不能改了吗,不是吧。
我知道你的意思,你可以这样,先记下A读数据时的时间,然后在A修改时判断一下,如果数据与A原来读的数据不同,在比较一下时间是不是在一定范围内,你可以提示上在他修改之前,有人已更改了该数据,问A还是不是修改该数据。
lemong
2003-08-21
打赏
举报
回复
用事务保护就可以
wolve
2003-08-21
打赏
举报
回复
没办法,问题是你这么做解决了什么问题。
henry2002
2003-08-21
打赏
举报
回复
谢谢samluo,时间戳应该是个不错的主意。
我看了.net中的dataadapter类有一个update方法,可以用datatable、datarow或dataset做参数,好像能自动确定哪些数据被修改或删除,然后它自己就会构造一个合适的语句进行更新或删除,而且好像能避免在读取数据和更新数据之间数据被更新的问题。
但是如果用asp.net做客户端开发,我不知道如何能保存住原先读取出来的数据。
现在做法是:要显示某条记录的信息就从数据库取出来放到一个dataset中,然后在aspx页面中显示,随后dataset对象就被抛弃。修改结束需要更新数据的时候再根据页面中的各控件数据进行更新,这样原先取出来的原始数据对应的dataset就没了,那么如何利用dataadapter的update方法呢?
samluo316
2003-08-21
打赏
举报
回复
用数据库中的时间戳进行比较。每个表加一个时间戳,在查询页面获取当时的时间戳,在提交更改获取删除时比较时间戳是否相同,就可以根据返回的异常进行相应的处理。
asp.net知识库
一完美的关于请求的目录不存在而需要url重写的
解决方案
! 在C#中实现MSN消息框的功能 XmlHttp实现无刷新三联动ListBox 鼠标放在一个连接上,会显示图片(类似tooltip) 使用microsoft.web.ui.webcontrols的TabStrip与...
Java 高
并发
,什么方式解决?高
并发
和大流量
解决方案
对于我们所研发的网站,若网站的访问量非常大,那么我们必须考虑相关的
并发
访问问题...本 Chat 带你领略一下相关概念和
解决方案
: 概念类: 什么是 QPS、PV、UV、QPS 不等于
并发
连接数? 大中小三种类型网站的 ...
Python后台开发的高
并发
场景优化
解决方案
您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 互联网发展到今天,规模变得越来越大,也对所有的...针对该问题,本次公开课将分享在后台开发过程中,不同业务场景下这类问题的解决思路和方案。
云原生+大数据 全栈
解决方案
!
当然,也有企业选择了云数据架构
解决方案
,但是在购置云服务时,沿用过去的本地化部署的“超配”思维,资源过度配置,不必要的容量以及环境的可见性不良等问题,导致了云计算成本失控。从古代的“结绳记事”,到现在...
List集合多线程
并发
条件下不安全如何解决
List集合多线程
并发
条件下不安全的解决
C#
110,534
社区成员
642,575
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章