首页 > 代码库 > SqlBulkCopy 来自数据源的 String 类型的给定值不能转换为指定目标列的类型 bit

SqlBulkCopy 来自数据源的 String 类型的给定值不能转换为指定目标列的类型 bit

使用SqlBulkCopy批量插入,可以快速对大批量的数量插入,性能非常好

在使用时出现“来自数据源的 String 类型的给定值不能转换为指定目标列的类型 bit”异常

为DataTable与要插入的数据表字段位置不一样所至

DataTable与要插入的数据表要字段名,位置,数据类型都一至才可

示例,使用使用SqlBulkCopy插入多个表

 

        public bool BatchInsertUniqeCode(DataTable uniqueCodeProduceContrastDt,DataTable uniqueCodeGenerateDt)        {            using(SqlConnection conn= (SqlConnection)(base.DbContext.Database.Connection))            {                if (conn.State == ConnectionState.Closed) { conn.Open(); }                SqlTransaction tran = conn.BeginTransaction();                SqlBulkCopy upBlock = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, tran);                SqlBulkCopy ugBlock = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, tran);                try                {                    ugBlock.DestinationTableName = "UniqueCodeGenerate";                    ugBlock.BatchSize = uniqueCodeGenerateDt.Rows.Count;                    if (uniqueCodeGenerateDt != null && uniqueCodeGenerateDt.Rows.Count > 0)                    {                        ugBlock.WriteToServer(uniqueCodeGenerateDt);                    }                    ugBlock.Close();                    upBlock.DestinationTableName = "UniqueCodeProduceContrast";                    upBlock.BatchSize = uniqueCodeProduceContrastDt.Rows.Count;                    if (uniqueCodeProduceContrastDt != null && uniqueCodeProduceContrastDt.Rows.Count > 0)                    {                        upBlock.WriteToServer(uniqueCodeProduceContrastDt);                    }                    upBlock.Close();                    tran.Commit();                    return true;                }                catch(Exception ex)                {                    tran.Rollback();                    throw ex;                }                finally                {                    upBlock.Close();                    ugBlock.Close();                    conn.Close();                }            }        }

 

SqlBulkCopy 来自数据源的 String 类型的给定值不能转换为指定目标列的类型 bit