c# 与 sql的问题。
是这样的,我们的一个发传真的系统。提供给客户用是WEB方向的,还有2个WINFORM的检测(B)和上传文件用(A)的。
同时都连接了一个数据库。传真在WEB操作的地方会预扣0.5元钱发传真。我的A会去数据库里老要上传的文件。上传失败的话会把预扣的钱返回给总额里。
B的话就是去检测传真发送的状态,成功的话计算钱,从预扣的地方扣出0.5元,然后减掉金额,加会给总额(可能是负数,但是一样是扣成功的)
失败的话,在预扣值上扣0.5RMB,加回总额。
简单的说,有个锁定值:就是当前发的传真锁定的金额。大部分在里面操作。
可是程序跑着跑着,出现了锁定金额里面的钱多了出来。
算了下用掉的钱和剩余的钱加上锁定的钱和之前的总金额是一样的。
我很郁闷,不知道原因在那里,大家可以帮我出出主意么?
先说下我的SQL是怎么执行的,我没用框架,自己拼了一个list<string>存储sql语句,然后用Sqlconnection+sqlcommand+sqlreader来执行语句。
update tfax_userdata set locksum = convert(numeric(20,2), locksum) - 0.5, amount = convert(numeric(20,2), amount) + {0} where account = '{1}'
以上是扣钱的语句,是成功的。别的也大致相同,只是把钱加回给account...
我不明白为什么锁定值里面会多出来。查了log,发现所有的预扣的数目,成功、失败的地方记录都是全的。没有少执行语句。。。
我现在是彻底找不着北了。。。很不能理解为什么会这样。
大家出点建议。。。小弟在这写过了。