日期:2014-05-18  浏览次数:21135 次

利用SqlBulkCopy多次导入sql server2000,但发生内容重复,求解决办法!
本人创建了一个程序,大致框架如下:

触发button事件--->导入一张excel表,最终将excel表的数据导入sql server 2000

button事件大略如下:

{

  OpenFileDialog openFile1 = new OpenFileDialog(); //要求用户导入目标Excel表

  new DataSet();  

  new DataTable();

{

  // 将Excel表元数据导入DataTable,生成多条DataRow

}

  using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn)) //将DataTable批量导入sql server 2000

  {

  bulkCopy.WriteToServer(DataTable);

  }

}

-----------------------------------------

当点第一次button,导入表1之后,查询sql server,发现有一张表1的内容;

但是,点第二次button,导入表2,再次查询sql server,却发现内容为:

表1+表1+表2

也就是说重复了表1的内容。跟踪SqlBulkCopy的运行次数:总共只为2,不是3。

我试过在SqlBulkCopy之后写Dataset.Clear()和DataTable.Clear()也无济于事。

请问问题出现在哪?解决办法是什么呢?

------解决方案--------------------
LZ~~~阅读你的代码够费劲-_-

基本把你的意图理解为:

1读取EXCEL
2验证EXCEL数据
3从EXCEL获取 年,月属性
4根据年月属性从数据库中获取指定数据
5数据拼接成新的DATATABLE
6数据入库


目前看下来你的数据填充这块的业务逻辑有问题


string sql = @"select * from LifeInsuranceCompany";

这里你获取了表中所有的数据
当第二次添加时,第一次数据也被取出,然后新的数据追加在了DT的后面。

当执行BULKCOPY时就等于多加了一次数据(1)

而数据库的数据变为 1+1+2了,如果第三次添加数据时则变为 1+1+2+1+1+2+3


既然你是新填数据,这里完全没有必要从原来的表中获取数据