首页 > 代码库 > 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。