C#批量插入数据SqlBulkCopy
2016-06-01 16:52
393 查看
例子: SqlConnection sqlCon = new SqlConnection(sqlConStr); sqlCon.Open(); SqlTransaction sqlTran = sqlCon.BeginTransaction(); // 开始事务 SqlBulkCopy sqlBC = new SqlBulkCopy(sqlCon, SqlBulkCopyOptions.Default, sqlTran); sqlBC.DestinationTableName = "SaleInfo"; sqlBC.BatchSize = 1; DataTable dtSale = new DataTable(); dtSale.Columns.Add("SaleID", typeof(Int32)); dtSale.Columns.Add("SaleDate",typeof(DateTime)); dtSale.Columns.Add("SaleDep"); dtSale.Columns.Add("Operator"); dtSale.Columns.Add("CusID", typeof(Int32)); dtSale.Columns.Add("SaleServerTime"); DataRow sqlRow = dtSale.NewRow(); sqlRow["SaleID"] = 700; sqlRow["SaleDate"] = DateTime.Today; sqlRow["SaleDep"] = "管理部"; sqlRow["Operator"] = "system"; sqlRow["CusID"] = 780; sqlRow["SaleServerTime"] = ""; dtSale.Rows.Add(sqlRow); try { sqlBC.WriteToServer(dtSale); //此处报错 sqlTran.Commit(); } catch (Exception) { sqlTran.Rollback(); throw; } finally { sqlBC.Close(); sqlCon.Close(); } Close(); 报错内容:来自数据源的 String 类型的给定值不能转换为指定目标列的类型 smalldatetime。 表结构说明: CREATE TABLE [SaleInfo] ( [SaleID] [int] NOT NULL , [HWSaleID] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL , [SaleDate] [smalldatetime] NULL , [SaleDep] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL , [Operator] [varchar] (12) COLLATE Chinese_PRC_CI_AS NULL , [CusID] [int] NULL , [ReturnMoney] [real] NULL , [SaleServerTime] [varchar] (9) COLLATE Chinese_PRC_CI_AS NULL , CONSTRAINT [PK_SaleInfo] PRIMARY KEY CLUSTERED ( [SaleID] ) ON [PRIMARY] ) ON [PRIMARY] 解答: 查看表结构后发现C#代码中Columns中少了[HWSaleID] 和[ReturnMoney] (程序中没用到),数据库中删除了这2列后程序正常了。 结论:SqlBulkCopy 提交数据不同于Insert语句,DataTable.Columns必须与数据库中的列完全匹配(包括列数量及数据类型).
相关文章推荐
- sql无限级树型查询
- 【Win 10 应用开发】Sqlite 数据库的简单用法
- 如何修改WAMP中mysql默认空密码 以及修改时报错的处理方法
- mysql处理海量数据时的一些优化查询速度方法
- oracle表分区详解
- Hibernate:No row with the given identifier exists
- SQL Server 2016新特性: tempdb增强(Multiple TempDB Files)
- 从oracle学习mysql
- PowerDesigner反向工程,根据Oracle数据库结构生成ER图(2014-3-25记)
- Redis集群研究和实践(基于redis 3.0.5)
- 解析mnist数据库
- SQL语句
- SQL Server索引 (原理、存储)聚集索引、非聚集索引、堆 <第一篇>
- 数据库视频总结
- MySql - 主从同步且只同步指定表
- MYSQL查询一周内的数据(最近7天的)、最近一个月、最近三个月数据
- Linux下静默安装 oracle参考链接(for单实例、for RAC集群)
- 如何开启MySQL的慢查询日志
- 从ICLassFactory 为 CLSID的COM组建创建实例失败
- Fatal NI connect error 12170.