为了账号安全,请及时绑定邮箱和手机立即绑定

怎么样让多个用户不能同时点击同一条数据

怎么样让多个用户不能同时点击同一条数据

慕盖茨4494581 2018-12-06 19:53:16
我的想在数据库里加一个状态,被一个人点击后就会更新状态,别的人点击时查询已更新的状态就返回false,但还有问题就是,如果多人同时点击同一个未更新状态的数据,这里应会出问题,怎么样才能防止多人同时点击同一条数据!!! protected void DataGrid1_ItemCommand(object source, DataGridCommandEventArgs e) { string id = DataGrid1.DataKeys[e.Item.ItemIndex].ToString(); string ssql = "select * from 数据表 with(tablockx) where ID='" + id + "'"; SqlDataReader dr = SQLHelper.Order(ssql); string a = dr["状态"].ToString(); dr.Close(); if (a == "处理中") { Response.Write("false!"); } else { string usql = "update 数据表 with(tablockx) set 状态='处理中' where ID='" + id + "'"; int i=SQLHelper.ExecuteSql(usql); if (i > 0) { Response.Write("ture!"); } else { Response.Write("false!"); } } } 但这样子貌似还有问题,请大家帮忙提提建议!!!
查看完整描述

35 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

@_dance: 

好,那我们假设有并发,那你就用代码给其排队(队列)!让第一个人先走!其他的人都等着去吧!

理论上这种方法可行,不过需要实践!方案,仅供楼主参考!如有更好记得分享!good luck ~~~

查看完整回答
反对 回复 2019-01-07
?
守候你守候我

TA贡献1802条经验 获得超10个赞

@Beyond-bit: 如果并发状态下怎么弄呢~

查看完整回答
反对 回复 2019-01-07
?
POPMUISE

TA贡献1765条经验 获得超5个赞

@_dance: 

你可以将这个超链接存到数据库,并且加一个status字段,初始化的时候是可以点击的,status 是激活!当如果有用户点击了,那么失效,status =失效!其他用户访问,逻辑层判断status是激活还是失效?如果失效说明有人点击了,还没执行完毕(ajax 执行完毕修改status状态)!response给其他访问者超链接都是失效的!

查看完整回答
反对 回复 2019-01-07
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

@_dance: 

A用户点击了,连接即可失效了(其他用户点击不响应,失效!),直到A用户走完这个流程,然后才会激活连接方可供下一个用户点击撒!下一个用户只要点击,那么超链接照样失效,后来的还是不能点击!如何?

查看完整回答
反对 回复 2019-01-07
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

@Beyond-bit: 如果在执行过程中多人点击怎么办呢,不就还有问题了吗?

查看完整回答
反对 回复 2019-01-07
?
呼如林

TA贡献1798条经验 获得超3个赞

@_dance: 

还有时差问题?当我点击,没有执行完毕后面其他人无法执行吧!

难道还需要用到队列?排队访问?并发量大了这样容易阻塞吧!

查看完整回答
反对 回复 2019-01-07
?
忽然笑

TA贡献1806条经验 获得超5个赞

这样还是有时间差的问题~,谢谢了~

查看完整回答
反对 回复 2019-01-07
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

当有人点击设置超链接无法访问,当该方法执行完毕返回一个东东,然后再启用超链接!

查看完整回答
反对 回复 2019-01-07
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

@_dance: 看了看楼下的回复

 数据库里面就和我上面说的就行了

程序里面可以搞个单例  搞个锁不就行啦

查看完整回答
反对 回复 2019-01-07
?
HUWWW

TA贡献1874条经验 获得超12个赞

恩,是存在这个问题,谢谢了~

查看完整回答
反对 回复 2019-01-07
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

你分2次写有时间差的 写在一个存储过程同一事务里面

查看完整回答
反对 回复 2019-01-07
首页上一页12下一页尾页
  • 35 回答
  • 0 关注
  • 1107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号