DataTable 批量插入SqlServer数据库 使用:SqlBulkCopy
简单使用:
private void UpdateTitle(DataTable dt)
{ if (dt != null && dt.Rows.Count > )
{
using (SqlBulkCopy sbc = new SqlBulkCopy(SqlHelper.connectionString))
{
sbc.BatchSize = dt.Rows.Count;//每批次操作数量
sbc.BulkCopyTimeout = ;//操作允许的超时时间 单位:秒 (超时则事务不提交)
sbc.DestinationTableName = "TB_product_NewTitle"; //数据库对应表名
sbc.WriteToServer(dt);
}
}
}
如果出现 DataTable中的字段和数据库的字段不对应的异常信息,需要手动的为DataTable的列 和 数据库中的列 绑定
注意:dataColumns的数据类型,一定要和数据库一样,不然各种报错
字段也区分大小写,一定要注意 /// <summary>
/// 批量更新数据到数据库(DataTable列结构保持和数据库表一致)
/// </summary>
/// <param name="dt"></param>
public static void BulkCopyData(Queue<QueueMessage> myQ, int SiteID,int max)
{
if (myQ != null && myQ.Count > )
{
using (SqlBulkCopy sbc = new SqlBulkCopy(SqlHelper.con))
{
QueueMessage qm = new QueueMessage();
DataTable dt = new DataTable();
dt.Columns.AddRange(
new DataColumn[] {
new DataColumn("Sender", typeof(Int32)),
new DataColumn("Receiver", typeof(Int32)),
new DataColumn("Content", typeof(string)),
new DataColumn("CreateTime", typeof(DateTime)),
new DataColumn("SenderType", typeof(int))
});
int qcount=;
if (max > )
qcount = max;
else
qcount = myQ.Count();
for (int i = ; i < qcount; i++)
{
qm = myQ.Dequeue() as QueueMessage;
DataRow dr = dt.NewRow();
dr["Sender"] = qm.Sender;
dr["Receiver"] = qm.Receiver;
dr["Content"] = qm.Content;
dr["CreateTime"] = qm.CreateTime;
dr["SenderType"] = qm.SenderType;
dt.Rows.Add(dr);
}
//把DataTable的列名和数据库的列名绑定
sbc.ColumnMappings.Add("Sender", "Sender");
sbc.ColumnMappings.Add("Receiver", "Receiver");
sbc.ColumnMappings.Add("Content", "Content");
sbc.ColumnMappings.Add("CreateTime", "CreateTime");
sbc.ColumnMappings.Add("SenderType", "SenderType");
sbc.BatchSize = dt.Rows.Count;//每批次操作数量
sbc.BulkCopyTimeout = ;//操作允许的超时时间 单位:秒 (超时则事务不提交)
sbc.DestinationTableName = "TB_Message_" + SiteID;//数据库对应表名
sbc.WriteToServer(dt);
}
}
}
DataTable 批量插入SqlServer数据库 使用:SqlBulkCopy的更多相关文章
- .net批量插入SqlServer数据库的方法:
		using System;using System.Collections.Generic;using System.Configuration;using System.Data;using Sys ... 
- java 高效批量插入 sqlserver 数据库
		插入1000条:347毫秒 插入1W条:4086毫秒 插入10W条:47953毫秒 同理,批量更新也可以用此方法,只不过没有插入的快, 更新1000条:90秒 更新100条:9秒 
- C# 数据批量插入到数据库SqlBulkCopy(源数据类型:List<T> Or DataTable)
		/*_____________________ List<T>类型数据 To Sql_______________________________*/ /// <summary& ... 
- .net使用SqlBulkCopy类操作DataTable批量插入数据库数据,然后分页查询坑
		在使用SqlBulkCopy类操作DataTable批量插入数据,这种操作插入数据的效率很高,就会导致每一条数据在保存的时间基本一样,在我们分页查询添加的数据是,使用数据的添加时间来排序就会出现每页的 ... 
- C#批量将数据插入SQLServer数据库
		Database db = CreateDatabase(); var varConnnection = db.CreateConnection(); //获取连 ... 
- DataTable 获取列名 DataTable批量更新至数据库
		好久没写东西了,这几个月也没下功夫钻研技术,愧疚啊.说下最近刚学会的DataTable 的用法吧,新手适合看下. 1 DataTable 获取列名 在处理数据的时候大家都会用到模型,从datatabl ... 
- 批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor
		批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor2.1.11 之前写过一篇文章,使用redgate公司的SQL PROMPT工具,但是不太方便 SQLPRO ... 
- MySQL数据库工具类之——DataTable批量加入MySQL数据库(Net版)
		MySQL数据库工具类之——DataTable批量加入数据库(Net版),MySqlDbHelper通用类希望能对大家有用,代码如下: using MySql.Data.MySqlClient; us ... 
- ASP.NET MVC NPOI导入Excel DataTable批量导入到数据库
		使用NPOI导入Excel 首先在MVC项目中导入NPOI 查询NPOI安装,排序依据,选择:最高下载量,选择第一个. 在控制器中创建ExcelController 在Index视图中写入代码: @u ... 
随机推荐
- C#如何获取物理网卡,虚拟网卡,以及无线网卡
			就不废话了,直接上代码 /// <summary></summary> /// 显示本机各网卡的详细信息 /// <summary></summary> ... 
- 论文 查重 知网 万方 paperpass
			相信各个即将毕业的学生或在岗需要评职称.发论文的职场人士,论文检测都是必不可少的一道程序.面对市场上五花八门的检测软件,到底该如何选择?选择查重后到底该如何修改?现在就做一个知识的普及.其中对于中国的 ... 
- JMS links
			http://yuxisanren.iteye.com/blog/1912587 http://somebody-hjh.iteye.com/blog/726050 http://docs.oracl ... 
- 安装go语言,配置环境及IDE,只需3步
			安装go语言,配置环境及IDE,只需3步 ( 欢迎加入go语言群: 218160862 , 群内有实践) 第1.下载 go压缩包,解压 ,如果你是window系统,请选择go1.5.windows ... 
- 通过HttpWebRequest请求与HttpWebResponse响应方式发布接口与访问接口
			一.API接口的编码 1.首页的页面代码: protected void Page_Load(object sender, EventArgs e) { /* * 请求路径:http://xxxx/i ... 
- 命令行模式  svn版本管理
			linux 下svn 在命令行模式下的操作安装完svn服务并配置了环境变量之后,要创建一个存放工厂(项目)的仓库repositories用于版本控制(比如我的repositories的路径为 path ... 
- SILVERLIGHT 应急卫生模拟演练项目之loading界面实现
			第一次在博客园写文章 俺是菜鸟 有不足之处还请大佬们多多指教 第一次也不知道该写啥 俺就拿自己最近做的一个项目 来细说吧 俺们公司是做医疗卫生方面的 其中有一块涉及到应急卫生模拟演练方面 这块分到我 ... 
- mac编辑器快捷键(自己摸索出来的)
			control + a 行首 control + e 行尾 control + f 向右移动 control + b 向左移动 control + k 删除光标后面 cmd + delet ... 
- Course Schedule
			There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prer ... 
- C++ 箴言
			1.把C++当成一门新的语言学习: 2.看<Thinking In C++>,不要看<C++变成死相>: 3.看<The C++ Programming Language ... 
