日期:2014-05-17  浏览次数:20476 次

数据批量插入、更新
环境是 vs2008、oracle是一个winform项目
数据源是execl 2007
只有一张表,共计15个字段

业务需求:
 1. execl表里有老数据和新数据,老数据就是数据库中已经存在(主键区分)
 2. execl首先加载到datagridview中,列表上提供编辑、删除、添加行的操作
 3. 将datagridview中的数据更新至数据库,老数据执行更新操作,新数据执行插入操作

我今天的做法是:
1.在oracle里怎了一个表B和目标表A结构一样
2.把datagridview的数据插入B表
3.delete from A where A.id in (Select B.id from B innerjion A where A.id=B.id)
  insert into A select * from B

我用ado.net里的事务提交,最后出现主键冲突,就是我上面写的这两句出了问题
我想问问有没有什么更好的方法勒,执行效率也得考虑到,不然我就一条一条去判断去了,呵呵





------解决方案--------------------
按你的描述
delete from A where A.id in (Select B.id from B innerjion A where A.id=B.id)
insert into A select * from B
这两句没有问题啊
你可以直接在oracle中测试上面两个语句看有没有报错。