读书人

高手支招:执行 update sql语句,影响行

发布时间: 2012-02-20 21:18:23 作者: rapoo

高手支招:执行 update sql语句,影响行返回为1,但实际上有时数据记录并没有修改成功.

StrSql:='update MyTable set flag = 1, status='F' where NO='xxxxx''
DM.TB_QUERY.Close;
DM.TB_QUERY.SQL.Clear;
DM.TB_QUERY.SQL.Text:=StrSql;
DM.TB_QUERY.ExecSQL;
if( DM.TB_QUERY.RowsAffected <>1) then //报错
检测到每次执行语句成功,影响行返回为1,但实际上有时数据记录并没有修改成功.

这个地方每次有16条记录同步更新, 有6台机器同时执行.
即6*16条记录更新, 这个语句块用临界区保护

但生产完后, log是执行成功了,但还是有部分的flag没有更新

请帮忙!


[解决办法]
检查条件是否完全满足
[解决办法]
而且还存在一个问题,虽然你的执行代码是临界的,但是ExecSQL后,可能存在数据延时,这个并不能被临界所影响,所以在执行下一个ExecSQL时,可能上一次的结果会影响到这次的执行效果
[解决办法]
NO字段里的数据是纯数字还是有字母?如果有字母,需要注意大小写,大小写不一致也会被认为是不同的
[解决办法]
是ADO控件么。。。有个BUG,去MS下载更新
[解决办法]
可以在SQLServer服务器开起监控,看一下执行的SQL语句
[解决办法]
帮顶。

读书人网 >.NET

热点推荐