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来进行事务回滚,即是要么全部成功要么全部不成功.如下代码 // ...
随机推荐
- java基础(5)--流程控制结构
流程控制结构 if结构 当关系表达式为true时,执行语句 if(关系表达式){ //语句块 } if-else结构 当关系表达式为true时,执行语句块1,否则执行语句块2 if(关系表达式){ / ...
- VLAN虚拟局域网技术(一)-计算机网络
本文主要知识来源于学校课程,部分知识来自于H3C公司教材,未经许可,禁止转载.如需转载,请联系作者并注明出处. 1. VLAN(Virtual LAN):我们称之为虚拟局域网,它的作用就是将物理上互 ...
- Find Min In Rotated Sorted Array2,包含重复数字的反转序列找最小值。
public int findMin(int[] nums) { return findMin(nums, 0, nums.length - 1); } public int findMin(int[ ...
- lucene学习-1 - 准备工具
需要准备的内容: jdk 1.7 eclipse Kepler lucene 4.10.2 luke 4.10.2 以及一些txt文档 其他的不需多说,只简要介绍下luke. 以下内容来自百度百科: ...
- 用Heartbeat实现HA集群
HA即高可用(high avaliable),又被叫做双机热备,用于关键性业务,简单理解就是,有两台机器A和B,正常是A提供服务,B待机闲置,当A宕机或服务宕掉,会切换到B机器继续提供服务.常用实现高 ...
- C++(十六) — 类中引用成员函数、命名空间的使用
1.为什么类中引用成员函数? 类将属性和方法做了封装.类是一种数据类型,也就是:固定大小内存块的别名. 类的定义是一个抽象的概念,定义时不分配内存,当用类定义对象时,才分配一个固定大小的内存块. 此时 ...
- 27-THREE.JS 平面
<!DOCTYPE html> <html> <head> <title></title> <script src="htt ...
- opencv:鼠标操作
示例程序: #include <opencv.hpp> using namespace cv; #define WINDOW_NAME "程序窗口" // ------ ...
- 012-对象——魔术常量__CLASS__ __METHOD__ __FUNCTION__ __DIR__ __FILE__
<?php /** *魔术常量__CLASS__ __METHOD__ __FUNCTION__ __DIR__ __FILE__ */ //魔术常量:__CLASS__ 得到类名. /*cla ...
- Struts01---入门小案例
创建web项目 实现的效果! 用户点击页面不同的链接,后台调用不同的代码! 创建两个类实现共同的接口! public interface Action { String execute(); } ...