1.获取要插入的数据datatable

/// <summary>
/// 从FMS取银行信息
/// </summary>
/// <returns></returns>
public void GetBankInfoFromFMS()
{
try
{
string connectionStr = Tool.GetConnectionStrings("BPMConnection");
BudgetServerClient client = new BudgetServerClient();
BankInfoRequest request = new BankInfoRequest();
request.PageIndex = ;
request.PageSize = int.MaxValue;
var response = client.QueryBankInfo(request);
if (response != null && response.total > && response.data != null && response.data.Count > )
{
//先删除
string sql = "delete from BPM_ExternalSupplier_BankInfo";
SqlHelper.ExecuteNonQuery(connectionStr, sql); //准备要批量插入的数据
DataTable table = new DataTable();
table.Columns.Add("ID");
table.Columns["ID"].DataType = typeof(Guid);
table.Columns.Add("Pkid");
table.Columns.Add("BankName");
table.Columns.Add("BankNum");
table.Columns.Add("Province");
table.Columns.Add("Citye");
table.Columns.Add("CreateUser");
table.Columns.Add("CreateTime");
table.Columns.Add("ModifiedUser");
table.Columns.Add("ModifiedTime");
table.Columns.Add("IsDeleted");
table.Columns["IsDeleted"].DataType = typeof(bool);
foreach (var item in response.data)
{
DataRow row = table.NewRow();
row["ID"] = Guid.NewGuid();
row["Pkid"] = item.Pkid;
row["BankName"] = item.BankName;
row["BankNum"] = item.BankNum;
row["Province"] = item.Province;
row["Citye"] = item.Citye;
row["CreateUser"] = "xuguanghui";
row["CreateTime"] = DateTime.Now;
row["ModifiedUser"] = "xuguanghui";
row["ModifiedTime"] = DateTime.Now;
row["IsDeleted"] = ;
table.Rows.Add(row);
}
SqlHelper.BulkCopyData(table, connectionStr, "BPM_ExternalSupplier_BankInfo");
}
}
catch (Exception ex)
{
Tool.SendErrorNotication("系统错误通知", "从FMS取银行信息GetBankInfoFromFMS方法错误,错误消息:" + ex.Message);
}
}

2.调用SqlBulkCopy

 /// <summary>
/// 批量写入
/// </summary>
/// <param name="sourceTable">数据源</param>
/// <param name="connStr">数据库连接串</param>
/// <param name="destinationTableName">目标表</param>
public static void BulkCopyData(DataTable sourceTable, string connStr, string destinationTableName)
{
SqlBulkCopy sbc = new SqlBulkCopy(connStr, SqlBulkCopyOptions.UseInternalTransaction);
sbc.BulkCopyTimeout = ;
try
{
sbc.DestinationTableName = destinationTableName;
foreach (DataColumn dc in sourceTable.Columns)
{
sbc.ColumnMappings.Add(dc.ColumnName, dc.ColumnName);
}
sbc.WriteToServer(sourceTable);
}
catch
{
//The SqlBulkCopy object is automatically closed at the end of the using block.
//可以不写,会自动关闭
sbc.Close();
}
finally
{
//The SqlBulkCopy object is automatically closed at the end of the using block.
//可以不写,会自动关闭
sbc.Close();
}
}

SqlBulkCopy 批量insert的更多相关文章

  1. sql 中的Bulk和C# 中的SqlBulkCopy批量插入数据 ( 回顾 and 粗谈 )

    通常,我们会对于一个文本文件数据导入到数据库中,不多说,上代码. 首先,表结构如下.   其次,在我当前D盘中有个文本文件名为2.txt的文件. 在数据库中,可以这样通过一句代码插入. Bulk in ...

  2. EntityFramework批量Insert

    先说解决办法:使用SqlBulkCopy. 然后问题是:这个和EF没有半点关系,还要拼DataSet. 再是解决办法:你可以自己封装一个,也可以使用人家写好的 EntityFramework.Bulk ...

  3. 【ADO.NET】SqlBulkCopy批量添加DataTable

    使用事务和SqlBulkCopy批量插入数据 SqlBulkCopy是.NET Framework 2.0新增的类,位于命名空间System.Data.SqlClient下,主要提供把其他数据源的数据 ...

  4. C#使用SqlTransaction事务回滚与SqlBulkCopy批量插入数据

    C#中批量处理数据,有时候因为一条记录导致整个批量处理失败.这时候肯能会导致数据不全等问题,这时候我们可以使用SqlTransaction来进行事务回滚,即是要么全部成功要么全部不成功.如下代码 // ...

  5. sql server 使用SqlBulkCopy批量插入数据库

    sql server sqlbulkcopy 批量数据插入数据库使用的是System.Data.SqlClient中的 SqlBulkCopy批量数据插入数据库 sql server 使用SqlBul ...

  6. java批量insert入mysql数据库

    mysql 批量insert语句为 insert into Table_(col1,col2...) values(val11,val12...),(val11,val12...),...; java ...

  7. SqlBulkCopy 批量复制数据到数据表

    使用 SqlBulkCopy 类只能向 SQL Server 表写入数据.但是,数据源不限于 SQL Server:可以使用任何数据源,只要数据可加载到 DataTable 实例或可使用 IDataR ...

  8. JDBC批量Insert深度优化(有事务)

    环境: MySQL 5.1 RedHat Linux AS 5 JavaSE 1.5 DbConnectionBroker 微型数据库连接池   测试的方案: 执行10万次Insert语句,使用不同方 ...

  9. SqlBulkCopy批量插入数据时,不执行触发器和约束的解决方法

    原文:SqlBulkCopy批量插入数据时,不执行触发器和约束的解决方法 在new SqlBulkCopy对象的时候,设置一下SqlBulkCopyOptions选项即可,按位或运算 SqlBulkC ...

随机推荐

  1. Unity3D文件读取

    Resources: 是作为一个Unity3D的保留文件夹出现的,也就是如果你新建的文件夹的名字叫Resources,那么里面的内容在打包时都会被无条件的打到发布包中.它的特点简单总结一下就是: 只读 ...

  2. Opencv探索之路(十九):读写xml和yml文件

    有时候我们处理完图像后需要保存一下数据到文件上,以供下一步的处理.一个比较广泛的需求场景就是:我们对一幅图像进行特征提取之后,需要把特征点信息保存到文件上,以供后面的机器学习分类操作.那么如果遇到这样 ...

  3. linux中grep命令的用法

    作为linux中最为常用的三大文本(awk,sed,grep)处理工具之一,掌握好其用法是很有必要的. 首先谈一下grep命令的常用格式为:[grep  [选项]  "模式"  [ ...

  4. 如何开始使用bootstrap

    登陆Bootstrap官网:http://getbootstrap.com/ Bootstrap中的JS插件依赖于jQuery,因此jQuery要在Bootstrap之前引用 bootstrap框架初 ...

  5. 微信小程序 服务器端生成用户登陆环节的 3rd_session

    一.环境: CentOS 6.8 nginx 1.8.0 php 7.0.10 二.背景 最近在开发一个微信小程序,不可避免的涉及到登陆的环节,登录时序图如下: 通过 wx.login() 获取到用户 ...

  6. Multimodal —— 看图说话(Image Caption)任务的论文笔记(一)评价指标和NIC模型

    看图说话(Image Caption)任务是结合CV和NLP两个领域的一种比较综合的任务,Image Caption模型的输入是一幅图像,输出是对该幅图像进行描述的一段文字.这项任务要求模型可以识别图 ...

  7. Objective-C NSFileManager的使用 各种文件操作

    所有方法 都很简单,大概记录一下,写文件并没有是追加的方式而是简单的覆盖 //创建文件夹 - (BOOL)creatDir:(NSString*)newDirName at:(NSString*)di ...

  8. 【CSS3】块级元素与行内元素的区别

    一.行内元素与块级函数的三个区别 行内元素的特点: 和其他元素都在一行上: 高,行高及外边距和内边距部分可改变: 宽度只与内容有关: 行内元素只能容纳文本或者其他行内元素. 行内元素设置width无效 ...

  9. 【ES】ElasticSearch初体验之使用Java进行最基本的增删改查~

    好久没写博文了, 最近项目中使用到了ElaticSearch相关的一些内容, 刚好自己也来做个总结. 现在自己也只能算得上入门, 总结下自己在工作中使用Java操作ES的一些小经验吧. 本文总共分为三 ...

  10. 前端程序员经常忽视的一个JavaScript面试题

    在网上找到一个有关JavaScript的面试题,特整理如下: function Foo() { getName = function () { alert (1); }; return this; } ...