利用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
既然你是新填数据,这里完全没有必要从原来的表中获取数据