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

SqlBulkCopy批量复制表有个奇怪的问题。
dataTable中只有3列 name sex address

我想把这个dataTable的全部数据复制到数据库中的一个表,数据库中的结构和dataTable相同,唯一的区别就是数据库中的表多了一个自增的主键id。
结果奇怪的现象就出现了,在数据库设计字段时,如果自增id放在最顶上,address列的值就为null 说明没有复制过来。
但是...可但是..如果设计时把id列拉到最底下,address列的值就复制过来了..相当无语,
期待高人解答..

代码如下 ..填充datatable的部分略了
C# code

SqlBulkCopy sqlBulkCopy = new SqlBulkCopy("server=.;uid=sa;pwd=sa;database=iisLogTest");
            sqlBulkCopy.DestinationTableName = "iisLogTable";//目标表名
            sqlBulkCopy.BatchSize = dt.Rows.Count;
            SqlConnection sqlConnection = new SqlConnection("server=.;uid=sa;pwd=sa;database=iisLogTest");
            sqlConnection.Open();
            if (dt != null && dt.Rows.Count != 0)
            {
                sqlBulkCopy.WriteToServer(dt);
            }
            sqlBulkCopy.Close();
            sqlConnection.Close();
            stopwatch.Stop();




------解决方案--------------------
设置映射,或者在dt 中加一列,数据为空 位置是第一列
------解决方案--------------------
因为填充的时候 会忽略第一列
------解决方案--------------------
可能需要给datatable添加一个自增列吧~~DataColumn类的AutoIncrement属性。
------解决方案--------------------
http://jackyrong.cnblogs.com/archive/2005/08/29/225521.html