自己得一点总结:
  1.BulkCopy采用的是插入方式,不是覆盖方式(原数据不动,在原数据的后面复制上dataTable中的内容)
  2.自增的字段不用赋值
  3.数据库字段名和dataTable列名可以不一样,对应关系用bulkcopy.ColumnMappings.Add("author", "author"); 关联
public void SaveTable(DataTable dtTable)
        {
            SqlBulkCopy sbc = new SqlBulkCopy(DbHelperSQL.connectionString, SqlBulkCopyOptions.UseInternalTransaction);
            sbc.BulkCopyTimeout = 5000;
            try
            {                
                sbc.DestinationTableName = "FAST_Temp";
                sbc.WriteToServer(dtTable);
            }
            catch (Exception ex)
            {
                //处理异常
            }
            finally
            {
                //sqlcmd.Clone();
                //srcConnection.Close();
                //desConnection.Close();
            }
        }

 

另外拓展一下SqlBulkCopyOptions枚举

 

  成员名称 说明
  AllowEncryptedValueModifications

允许加密值修改。

  CheckConstraints

默认情况下,不检查约束。

  Default

使用所有选项的默认值。

  FireTriggers

如果指定,则使服务器激发插入触发器,从而使行插入数据库。

  KeepIdentity

 未指定标识值时,该值由目标指派。

  KeepNulls

 如果未指定,由默认值替换 null 值(适用时)。

  TableLock

 如果未指定,则使用行锁定。

  UseInternalTransaction

ArgumentException。

相关文章: