日期:2014-05-18  浏览次数:20913 次

请教"按确定键太快,向数据库写入两条数据"的问题???
各位大侠我是写客运软件的,现在碰到一个问题就是有时候会出现向数据库写入两条数据,只是票号不一样,这样我认为是有可能按[确定]键太快的原故,所以这个这事件里加了lock(object){},可问题还是会出现,不知各位有没有碰到类似问题,望指教.

------解决方案--------------------
按一次后,该键失效。enable=false;
------解决方案--------------------
enable=false

处理完了,再搞成true~
------解决方案--------------------
楼主做的lock意义不明...
lock是做线程同步用的.
如果原因是按钮太快你lock
不lock都是一样的.因为按钮
的点击消息是被发到队列后再
在窗体线程中统一处理的.
------解决方案--------------------
如果是winform的,就按照上面说的:
enable=false 
处理完了,再搞成true~

如果是webform,
处理完了,js处理:button的enable=false,然后页面location = your url.
但是即使这样在web中还是可能会出现重复提交的现象. 对于这样的情况,我的处理方法是:
数据处理的部分用一个存储过程实现.对于需要防止重复提交的方法,
在处理结束之后记录用户的最后处理时间.
在处理之前,检查一下当前时间和用户的最后处理时间是否<1秒(或者更长一点)