违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条。

winingsky 2011-05-03 04:19:34
更新Access中的某一字段,第一次更新出现该异常,重新打开程序,第二次更新则可以更新成功。

...全文
196 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
anly20011 2012-02-06
  • 打赏
  • 举报
回复
同样子的问题!
qldsrx 2011-05-04
  • 打赏
  • 举报
回复
说白了就是主键的问题,可惜楼主偏偏不信,主键是不能修改的,主键必须和更新语句中的WHERE条件一致。

比如,当执行一条UPDATE语句的时候,普通执行会返回影响的函数,如果WHERE不匹配,则返回影响0行,不会报错,但是如果是执行DataAdapter的批量更新,一旦出现影响0行的情况,就会报错,因为它认为不可能会有0行影响(另外如果影响了2行也会报错),因此你更新时必须用主键,或者是唯一键,且该键值不能修改,否则会出现影响0行的情况。
CGabriel 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 winingsky 的回复:]

引用 5 楼 cgabriel 的回复:
虚读, Update 的时候无法找到原来的记录,无法进行更新。

你看一下那个动态生成的命令就知道是什么回事了

update的时候无法找到原来的记录,无法进行更新

这句话是什么意思?
[/Quote]

例如,其中一个值, 你读出来的时候是 A, 然后在客户端修改成 B, 准备提交回数据库。

而就在这个时候,另外一个程序把 A 改成了 C。

如果这个时候把 B 提交回数据库,就会出现这个问题。
winingsky 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cgabriel 的回复:]
虚读, Update 的时候无法找到原来的记录,无法进行更新。

你看一下那个动态生成的命令就知道是什么回事了
[/Quote]
update的时候无法找到原来的记录,无法进行更新

这句话是什么意思?
CGabriel 2011-05-03
  • 打赏
  • 举报
回复
虚读, Update 的时候无法找到原来的记录,无法进行更新。

你看一下那个动态生成的命令就知道是什么回事了
winingsky 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 vrhero 的回复:]
可能是并发冲突...Access不是适合多用户的数据库...
[/Quote]
我现在没有用动态生成SQL批量更新,换成在循环里写更新语句,更新成功了,我想问下动态生成更新语句和自己写更新语句有什么区别啊,我感觉当数据量大时,前面一种方法速度稍微快一点,但不会快很多
winingsky 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qldsrx 的回复:]
你可能忘了在程序中设置主键了
[/Quote]
有主键
vrhero 2011-05-03
  • 打赏
  • 举报
回复
可能是并发冲突...Access不是适合多用户的数据库...
qldsrx 2011-05-03
  • 打赏
  • 举报
回复
你可能忘了在程序中设置主键了

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧