错误:违反并发性: DeleteCommand 影响了预期 1 条记录中的 0 条
在access的mdb数据库动态更新的过程中,遇到了DeleteCommand出现DBConcurrencyException异常,错误:违反并发性: DeleteCommand 影响了预期 1 条记录中的 0 条。
程序逻辑:遍历表1的所有行,如果符合条件,则删除表1当前行,且删除表2中的相关行(两行),并在表2中插入新的一行。由于在判断的时候需要用到表2中新插入的行,所以得在循环中实时更新。
经查找:
该错误的原因为:数据库的主键设置为-自动编号。
错误分析:
首先获取的DeleteCommand和InsertCommand为自动获取,
OdbcCommandBuilder pCommbui_GD = new OdbcCommandBuilder(adapter_GD);
adapter_GD.DeleteCommand = pCommbui_GD.GetDeleteCommand(); OdbcCommandBuilder pCommbui_GX = new OdbcCommandBuilder(adapter_GX);
adapter_GX.DeleteCommand = pCommbui_GX.GetDeleteCommand();
adapter_GX.InsertCommand = pCommbui_GX.GetInsertCommand();
实际为:
DELETE FROM 管线表 WHERE ((ID = ?) AND ((? = 1 AND 起点号 IS NULL) OR (起点号 = ?)) AND ((? = 1 AND S_X IS NULL) OR (S_X = ?)) AND ((? = 1 AND S_Y IS NULL) OR (S_Y = ?)) AND ((? = 1 AND S_H IS NULL) OR (S_H = ?)) AND ((? = 1 AND 终点号 IS NULL) OR (终点号 = ?)) AND ((? = 1 AND E_X IS NULL) OR (E_X = ?)) AND ((? = 1 AND E_Y IS NULL) OR (E_Y = ?)) AND ((? = 1 AND E_H IS NULL) OR (E_H = ?)))
即通过对比以上的字段(包括主键ID)来删除行,但是由于ID为自动编号,当执行完删除、插入操作后,DataTable和数据库中相同ID号对应的其他字段值发生改变,这时候再根据原来读取的DataTable的一行为条件来删除数据库中的行时,会发现数据库ID值符合条件的其他字段的值不符合条件,所以出现错误。
修改办法:
只需要修改主键字段类型-将自动编号类型改为数字类型,再在插入的时候ID自动赋最大值即可。
思路:
新建字段ID_Copy,类型数字;将ID复制到ID_Copy;删除ID;将ID_Copy设为主键。每次在执行插入的操作时,将最大的编号赋值给ID_Copy。
参考sql语句:
SQL ALTER TABLE 语句
错误:违反并发性: DeleteCommand 影响了预期 1 条记录中的 0 条的更多相关文章
- 违反并发性: UpdateCommand影响了预期 1 条记录中的 0 条 解决办法
本文转载:http://www.cnblogs.com/litianfei/archive/2007/08/16/858866.html UpdateCommand和DeleteCommand出现DB ...
- FPC报价模块配置 UpdateCommand影响了预期 1 条记录中的 0 条 解决办法
今天在增加P4厂 FPC报价模块配置,增加刚挠信息节点,在保存时报错:UpdateCommand影响了预期 1 条记录中的 0 保存时使用:SqlDataAdapter批量更新DataTable,怎么 ...
- 违反并发性: UpdateCommand影响了预期 1 条记录中的 0
今天遇到这个错误,看到下面这种说法都没解决问题: 1 检查是否设有主键.2 DeleteCommand的问题:检查是否含有自动编号字段(Access的自动编号字段可能会引发此异常): UpdateC ...
- updatetable 违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条造成问题一种原因
数据库 表A ID UserName DeptID DeptName 1 张三 1 技术部 表B ID DeptName 1 市场部 当使 ...
- CUDA 7 Stream流简化并发性
CUDA 7 Stream流简化并发性 异构计算是指高效地使用系统中的所有处理器,包括 CPU 和 GPU .为此,应用程序必须在多个处理器上并发执行函数. CUDA 应用程序通过在 streams ...
- Select for update/lock in share mode 对事务并发性影响
select for update/lock in share mode 对事务并发性影响 事务并发性理解 事务并发性,粗略的理解就是单位时间内能够执行的事务数量,常见的单位是 TPS( transa ...
- Mysql加锁过程详解(4)-select for update/lock in share mode 对事务并发性影响
Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...
- (转载)Select for update/lock in share mode 对事务并发性影响
select for update/lock in share mode 对事务并发性影响 事务并发性理解 事务并发性,粗略的理解就是单位时间内能够执行的事务数量,常见的单位是 TPS( transa ...
- 深入了解 Scala 并发性
2003 年,Herb Sutter 在他的文章 “The Free Lunch Is Over” 中揭露了行业中最不可告人的一个小秘密,他明确论证了处理器在速度上的发展已经走到了尽头,并且将由全新的 ...
随机推荐
- SpringMVC传值、转发、重定向例子
练习接收页面参数值 使用request 使用@RequestParam注解 使用实体对象 练习向页面传出数据 使用HttpServletRequest和session 使用ModelAndView对象 ...
- Exploitation with Social Engineering Toolkit SET
下面演示如何使用S.E.T工具创建Payload并配置Armitage实现目标主机自动上线. 打开S.E.T工具选择第一项,进行Attacks配置. 选择4创建一个Payload和Listener. ...
- iOS中的各种id
 网卡Mac地址会随机化 
- React Native class 后面的命名首字母需要大写
React Native class 后面的命名首字母需要大写 否则会报Expeted a component class,got [object Object].
- angularJS 学习演示
开源网址(带中文说明注释):https://github.com/EnhWeb/angularJS.git
- 初学JavaScript
什么是 JavaScript? JavaScript 被设计用来向 HTML 页面添加交互行为. JavaScript 是一种脚本语言(脚本语言是一种轻量级的编程语言). JavaScript 由数行 ...
- Windows Server 2012 虚拟化实战:存储(二)
五.搭建Window Server 2012虚拟化的存储网络 前文我们讨论了Window Server 2012支持的各种与存储相关的技术,接下来我们通过实践对其中的一些技术进行检验.实际上Windo ...
- 烂泥:centos6 yum方式升级内核
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 最近没有时间好久没有写文章了,今天由于需要安装docker学习虚拟容器的知识,需要升级O ...
- js 的 protype 小总结
这里是对该文的总结: 1.Javascript中对象的prototype属性的解释是:返回对象类型原型的引用. 2.原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并 ...
- 初始webservice
webservice 可以用来查天气,以及手机号码类型等功能,这写都是简单的 方法有很多: 1.通过创建 web service exploer 创建出一个web services explorer ...