MSSQL使用sqlbulkcopy批量插入数据
具体代码如下:
/// <summary>
/// 批量插入数据到BayonetZipFailedPic表
/// </summary>
/// <param name="bayonetFailedPicList">含有多条拷贝失败的二次卡口图片数据的集合</param>
/// <returns>0-成功,-2-异常,其他-失败</returns>
public int BatchAddBayonetZipFailedPic(List<BayonetZipFailedPic> bayonetFailedPicList)
{
int result = ;
try
{
DataTable dataTable = GetBayonetZipFailedPicTableSchema();
foreach (BayonetZipFailedPic bayonetFailedPic in bayonetFailedPicList)
{
DataRow dataRow = dataTable.NewRow();
dataRow[] = bayonetFailedPic.ZipFileID;
dataRow[] = bayonetFailedPic.FileOriName;
dataRow[] = bayonetFailedPic.FileFullPath;
dataRow[] = System.DateTime.Now;//bayonetPic.OperateTime; dataTable.Rows.Add(dataRow);
}
return BatchAddBayonetZipFailedPic(dataTable, "BayonetZipFailedPic");
}
catch (Exception exception)
{
logger.Error("批量插入BayonetZipFailedPic数据异常!", exception);
result = -;
}
return result;
} /// <summary>
/// 创建和BayonetPic表对应的DataTable对象
/// </summary>
/// <returns>DataTable对象</returns>
private static DataTable GetBayonetPicTableSchema()
{
DataTable dataTable = new DataTable();
dataTable.Columns.AddRange(new DataColumn[] { new DataColumn("ID"), new DataColumn("FolderID",typeof(System.Data.SqlTypes.SqlGuid)), new DataColumn("FileOriName"),
new DataColumn("FileName"), new DataColumn("FileFullPath"), new DataColumn("Longitude"),new DataColumn("Latitude"),new DataColumn("Address"),new DataColumn("Contacts"), new DataColumn("ContactWay"), new DataColumn("PicStartTime"),
new DataColumn("PicEndTime"), new DataColumn("OperateTime"), new DataColumn("Status"),new DataColumn("Width"),new DataColumn("Height")}); return dataTable;
} /// <summary>
/// 批量插入数据到BayonetPic表
/// </summary>
/// <param name="bayonetPicList">含有多条二次卡口图片数据的集合</param>
/// <returns>0-成功,-2-异常,其他-失败</returns>
public int BatchAddBayonetPic(List<BayonetPic> bayonetPicList)
{
int result = ;
try
{
DataTable dataTable = GetBayonetPicTableSchema();
foreach (BayonetPic bayonetPic in bayonetPicList)
{
DataRow dataRow = dataTable.NewRow();
dataRow[] = new Guid(bayonetPic.FolderID);
dataRow[] = bayonetPic.FileOriName;
dataRow[] = bayonetPic.FileName;
dataRow[] = bayonetPic.FileFullPath;
dataRow[] = bayonetPic.Longitude;
dataRow[] = bayonetPic.Latitude;
dataRow[] = bayonetPic.Address;
dataRow[] = bayonetPic.Contacts;
dataRow[] = bayonetPic.ContactWay;
dataRow[] = bayonetPic.PicStartTime;
dataRow[] = bayonetPic.PicEndTime;
dataRow[] = System.DateTime.Now;//bayonetPic.OperateTime;
dataRow[] = bayonetPic.Status;
dataRow[] = bayonetPic.Width;
dataRow[] = bayonetPic.Height;
dataTable.Rows.Add(dataRow);
}
return BatchAddBayonetPic(dataTable, "BayonetPic");
}
catch (Exception exception)
{
logger.Error("批量插入BayonetPic数据异常!", exception);
result = -;
}
return result;
} private int BatchAddBayonetPic(DataTable dt, string tableName)
{
int result = ;
DBManager dbManager = this.dbConnector.GetDbManager(ConUtil.CaseId);
if (dbManager == null)
{
logger.Error("数据库连接未建立!");
result = -;
}
else
{
dbManager.SqlBulkCopyInsert(this.ConnectionString, this.DbType, dt, tableName);
result = ;
}
return result;
} public static int SqlBulkCopyInsert(string connectionString, ProviderType providerType, DataTable dataTable, string tableName)
{
if (connectionString == null || connectionString.Length == )
{
throw new ArgumentNullException("connectionString is null or empty!");
}
int result = ;
using (DbConnection dbConnection = DbFactory.GetProvider(providerType).CreateConnection())
{
SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connectionString);
sqlBulkCopy.DestinationTableName = tableName;
sqlBulkCopy.BatchSize = dataTable.Rows.Count;
dbConnection.ConnectionString = connectionString;
dbConnection.Open();
if (dataTable != null && dataTable.Rows.Count != )
{
sqlBulkCopy.WriteToServer(dataTable);
}
sqlBulkCopy.Close();
dbConnection.Close();
}
return result;
}
注意:以上代码不能直接拷贝执行,只是用法示例
MSSQL使用sqlbulkcopy批量插入数据的更多相关文章
- sql 中的Bulk和C# 中的SqlBulkCopy批量插入数据 ( 回顾 and 粗谈 )
通常,我们会对于一个文本文件数据导入到数据库中,不多说,上代码. 首先,表结构如下. 其次,在我当前D盘中有个文本文件名为2.txt的文件. 在数据库中,可以这样通过一句代码插入. Bulk in ...
- SqlBulkCopy批量插入数据时,不执行触发器和约束的解决方法
原文:SqlBulkCopy批量插入数据时,不执行触发器和约束的解决方法 在new SqlBulkCopy对象的时候,设置一下SqlBulkCopyOptions选项即可,按位或运算 SqlBulkC ...
- C#中的SqlBulkCopy批量插入数据
在C#中,我们可以使用sqlBulkCopy去批量插入数据,其他批量插入方法不在讨论. 1 /// <summary> 2 /// SqlBulkCopy批量插入数据 3 /// < ...
- 用SqlBulkCopy批量插入数据到SqlServer数据库表中
首先创建一个数据库连接类:SQLHelper using System; using System.Collections.Generic; using System.Linq; using Syst ...
- 使用 SqlBulkCopy 批量插入数据
/// <summary> /// 使用SqlBulkCopy将DataTable中的数据批量插入数据库中 /// </summary> /// <param name= ...
- sqlbulkcopy 批量插入数据
批量插入 Datetable数据 通过sqlbulkcopy 插入1百万条数据 用时 10秒钟 (有兴趣的小伙伴可以去测试) /// <summary> /// /// </sum ...
- c# sqlbulkcopy批量插入数据
dt信息中包含数据和表名 public static void SqlBulkInsert(DataTable dt, string connStr) { try { using (var conn ...
- 使用事务和SqlBulkCopy批量插入数据
SqlBulkCopy是.NET Framework 2.0新增的类,位于命名空间System.Data.SqlClient下,主要提供把其他数据源的数据有效批量的加载到SQL Server表中的功能 ...
- C#使用SqlTransaction事务回滚与SqlBulkCopy批量插入数据
C#中批量处理数据,有时候因为一条记录导致整个批量处理失败.这时候肯能会导致数据不全等问题,这时候我们可以使用SqlTransaction来进行事务回滚,即是要么全部成功要么全部不成功.如下代码 // ...
随机推荐
- Caffe python利用classify.py实现对单通道(灰度图)的数据进行分类
比如你在mnist的prototxt中定义图输入是单通道的,也就是channel=1,然后如果直接调用classify.py脚本来测试的话,是会报错,错误跟一下类似. Source param sha ...
- quartz(6)--集群
Quartz应用能被集群,是水平集群还是垂直集群取决于你自己的需要.集群提供以下好处: · 伸缩性 · 高可用性 · 负载均衡 目前,Quartz只能借助关系数据库和JDBC作业存储支持集群. qua ...
- php异常处理笔记
<?php header("Content-type:text/html;charset=utf-8"); // try // { // //业务处理 错误时抛出异常. // ...
- 前端开发日记之jQuery
优先引入CDN上的jQuery,如果失效再引入本地的jQuery! <script src="http://libs.baidu.com/jquery/1.11.1/jquery.js ...
- Pandas分组(GroupBy)
任何分组(groupby)操作都涉及原始对象的以下操作之一.它们是 - 分割对象 应用一个函数 结合的结果 在许多情况下,我们将数据分成多个集合,并在每个子集上应用一些函数.在应用函数中,可以执行以下 ...
- mysql数据库优化课程---9、php用什么写的
mysql数据库优化课程---9.php用什么写的 一.总结 一句话总结:php是用c语言写的,所以php里面的那些模块什么都是c语言 c 1.php用什么写的? c php是用c语言写的,所以php ...
- kindeditor上传本地图片实例
所需插件:kindeditor下载 密码: 5ry4 jsp文件: <script type="text/javascript" language="javas ...
- uva 1511 最小生成树
https://vjudge.net/problem/UVA-1151 题意,给出N个点以及二维坐标,可以在任意两点间建立通路,代价是两点欧几里得距离的平方,同时有q个套餐,套餐x有qx个点,代价是q ...
- [转载]java合并word文件
需求背景 在互联网教育行业,做内容相关的项目经常碰到的一个问题就是如何动态生成一张word试卷.事先把题库中的每一道试题都已经保存成一个独立的word文件了,但是在选择了部分试题生成一张word试卷的 ...
- 【Wannafly挑战赛10 - B】小H和密码(DP)
试题链接:https://www.nowcoder.com/acm/contest/72/B 题目描述 小H在击败怪兽后,被一个密码锁挡住了去路 密码锁由N个转盘组成,编号为1~N,每 ...