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来进行事务回滚,即是要么全部成功要么全部不成功.如下代码 // ...
随机推荐
- Cacti的基本安装配置
////////////////////cacti///////////////////////////常用的监控软件有:cacti.nagios.zabbix等 cacti 重图形.有数据历史.需要 ...
- js 技巧总结
插件解析 我们理解您需要更便捷更高效的工具记录思想,整理笔记.知识,并将其中承载的价值传播给他人,Cmd Markdown 是我们给出的答案 -- 我们为记录思想和分享知识提供更专业的工具. 您可以使 ...
- 通过Google Custom Search API 进行站内搜索
今天突然想把博客的搜索改为google的站内搜索,印象中google adsense中好像提高这个站内搜索的代码,但苦逼的是google adsense帐号一直审核不通过,所以只能通过google c ...
- jenkins 环境搭建与入门示例
环境说明: 1.win7 2.tomcat 9.0.0.M17 3.jenkins 2.32.2.war jenkins 环境搭建 1.下载jenkins部署包 https://jenkins.io/ ...
- iOS-免证书真机调试
使用方法: 1.新建一个普通的项目 2.进入xcode,菜单栏选择xcode –> preferences (快捷键 command + ,) 3.在Accounts选项卡添加自己的Apple ...
- 【2018年全国多校算法寒假训练营练习比赛(第四场)- E】通知小弟(强连通缩点)
题目链接:https://www.nowcoder.com/acm/contest/76/E 题目描述 在战争时期,A国派出了许多间谍到其他国家去收集情报.因为间谍需要隐秘自己的身份, ...
- ARM汇编指令集5
为什么需要多寄存器访问指令? ldr/str每周期只能访问4字节内存,如果需要批量读取.写入内存时太慢,解决方案是stm/ld 举例(uboot start.S 537行) stmia sp, ...
- 关于 SimpleDateFormat 的非线程安全问题及其解决方案
一直以来都是直接用SimpleDateFormat开发的,没想着考虑线程安全的问题,特记录下来(摘抄的): 1.问题: 先来看一段可能引起错误的代码: package test.date; impor ...
- 【dlbook】机器学习基础
[机器学习基础] 模型的 vc dimension 如何衡量? 如何根据网络结构衡量模型容量?有效容量和模型容量之间的关系? 统计学习理论中边界不用于深度学习之中,原因? 1.边界通常比较松, 2.深 ...
- 记录一个因sqlmap导致的错误
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap PUBLIC "- ...