ASP.NET(C#) 使用 SqlBulkCopy 实现批量插入SQL(快捷简单)
业务需要,系统在处理数据时,每暂存一列数据将他插入到右侧的表格中,再执行批量保存,如图所示:
//以前的做法可能是生成一堆 insert into xx values xxx 的sql语句,在程序中去一次执行来实现。这种做法在数据量大的情况下,简直不要太慢!不建议使用
//在.NET里可以使用SqlBulkCopy来一次性插入多条数据,我们只需要使用WriteToServer给它传递一个DataTable类型,他就会自动实现批量插入
代码如下,我的代码需要处理一些数据,如果看起来麻烦请看代码下方的Demo:
protected void Button5_Click1(object sender, EventArgs e)
{
DataTable dt = new DataTable();
CJJLModel model = new CJJLModel();
//前台获取到的table所有数据转为List
model.CjjlList = Newtonsoft.Json.JsonConvert.DeserializeObject<cjjLists>(this.HidValue.Value);
Tool.SystemPage UserDal = new Tool.SystemPage();
string UserData = UserDal.GetPageUserData();
string[] ArrUser = UserData.Split(',');
for (int i = ; i < model.CjjlList.Count; i++)
{
model.CjjlList[i].Creater = ArrUser[];
model.CjjlList[i].CreateData = DateTime.Now;
model.CjjlList[i].CreateTime = DateTime.Now;
}
//list转DataTable
dt = ToDataTable(model.CjjlList);
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(SqlHelper.SCConnString))
{
bulkCopy.DestinationTableName = "SC_CJ_CJJL"; //指定要插入的目标表 //DataTable列名与数据库列名的映射
bulkCopy.ColumnMappings.Add("ID", "ID");
bulkCopy.ColumnMappings.Add("Location", "Location");
bulkCopy.ColumnMappings.Add("MLDM", "MLDM");
bulkCopy.ColumnMappings.Add("MLMC", "MLMC");
bulkCopy.ColumnMappings.Add("GGMC", "GGMC");
bulkCopy.ColumnMappings.Add("XDL", "XDL");
bulkCopy.ColumnMappings.Add("SJHL", "SJHL");
bulkCopy.ColumnMappings.Add("ZPPS", "ZPPS");
bulkCopy.ColumnMappings.Add("TMLKS", "TMLKS");
bulkCopy.ColumnMappings.Add("SCDH", "SCDH");
bulkCopy.ColumnMappings.Add("CHS", "CHS");
bulkCopy.ColumnMappings.Add("BZ", "BZ");
bulkCopy.ColumnMappings.Add("QWID", "QWID");
bulkCopy.ColumnMappings.Add("ZCID", "ZCID");
bulkCopy.ColumnMappings.Add("MRBBID", "MRBBID");
bulkCopy.ColumnMappings.Add("KH", "KH");
bulkCopy.ColumnMappings.Add("FDCS", "FDCS");
bulkCopy.ColumnMappings.Add("YSDM", "YSDM");
bulkCopy.ColumnMappings.Add("SYBW", "SYBW");
bulkCopy.ColumnMappings.Add("CreateData", "CreateData");
bulkCopy.ColumnMappings.Add("Creater", "Creater");
bulkCopy.ColumnMappings.Add("CreateTime", "CreateTime"); bulkCopy.WriteToServer(dt);//写入到数据库中
}
Response.Write("<script>alert('保存成功');location.href='CJJLList.aspx';</script>");
}
Demo示例代码:
protected void Button5_Click(object sender, EventArgs e)
{
//准备要批量插入的数据
DataTable table = new DataTable();
table.Columns.Add("Age");
table.Columns.Add("Name"); //添加测试数据
DataRow row = table.NewRow();
row["Age"] = ;
row["Name"] = "张三";
table.Rows.Add(row); DataRow row1 = table.NewRow();
row1["Age"] = ;
row1["Name"] = "李四";
table.Rows.Add(row1); string connectionStr = "数据连接字符串";
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionStr))
{
bulkCopy.DestinationTableName = "Person";//在插入的目标表
//DataTable列名与数据库列名的映射
bulkCopy.ColumnMappings.Add("Age", "Age");
bulkCopy.ColumnMappings.Add("Name", "Name");
bulkCopy.WriteToServer(table);//写入到数据库中
}
Response.Write("YES");
}
到此结束,谢谢各位~
ASP.NET(C#) 使用 SqlBulkCopy 实现批量插入SQL(快捷简单)的更多相关文章
- C#中使用SqlBulkCopy的批量插入和OracleBulkCopy的批量插入
1.首先我们做一下准备工作,在sql server和oracle分别建立一个Student表 oracle中 --创建Student表 -- create table Student( stuId n ...
- .Net批量插入数据到SQLServer数据库,System.Data.SqlClient.SqlBulkCopy类批量插入大数据到数据库
批量的的数据导入数据库中,尽量少的访问数据库,高性能的对数据库进行存储. 采用SqlBulkCopy来处理存储数据.SqlBulkCopy存储大批量的数据非常的高效,将内存中的数据表直接的一次性的存储 ...
- SqlBulkCopy高效能批量插入SQL SERVER
what SqlBulkCopy是.NET提供的用来批量插入数据的一个类,特别是将内存中的数据一次性插入到数据库,目前只能插入到SQL SERVER数据库,数据源可以是DataTable.IDataR ...
- 聊聊编程开发的数据库批量插入(sql)
这里的批量插入,主要是支持SQL的大型存储数据库,本文以Mysql,Oracle,SqlServer,postgresql4类来说明,这大概是国内应用比较多的了.其余的应该可以按照这些去找.提到编程的 ...
- Python批量插入SQL Server数据库
因为要做性能测试,需要大量造数据到数据库中,于是用python写了点代码去实现,批量插入,一共四张表 简单粗暴地插入10万条数据 import pymssql import random __auth ...
- (转)批量插入sql语句
为了减少数据库连接的I/O开销,一般会把多条数据插入放在一条SQL语句中一次执行.1.INSERT INTO TABLE(col1, col2) VALUES(val11, val12), (val2 ...
- oracle的批量插入sql
insert into persons (id_p, lastname , firstName, city ) values (200,'haha' , 'deng' , 'shenzhen'), ( ...
- MySQL、Oracle批量插入SQL的通用写法
举个例子: 现在要批量新增User对象到数据库USER表中 public class User{ //姓名 private String name; //年龄 private Integer age; ...
- 使用SqlBulkCopy进行批量插入数据时踩过的坑
之前一直都没用过SqlBulkCopy关键字进行数据插入,更没了解过. 事因:因业务需要在数据表中添加两列,然后将数据插入进表中 之前都是这样写的 dt.Columns.Add(new DataCol ...
随机推荐
- struts2-052漏洞
转:https://thief.one/2017/09/06/1/ s2-052漏洞介绍 s2-052漏洞是当用户使用带有XStream组件的Struts-REST插件对XML格式的数据包进行反序列化 ...
- VIDENT iSmart900自动多系统扫描工具OBDII支持ABS / SRS / EPB /传输诊断DPF再生/上油复位编码电池配置
Vident系列中有许多多功能产品,其中最好的是Vident iSmart 900.购买视频系列后,以下是用户的一些评论 乔:因为我想它很好用.该工具很容易更新.我将公制重量单位的代码放到工具中.很容 ...
- 32. ClustrixDB License管理
一.许可的概述 ClustrixDB必须拥有有效的许可证才能运行.本授权指定: 集群中允许的最大节点数 ClustrixDB将使用的最大核数 在裸金属系统上,ClustrixDB将尝试启用与已授权的物 ...
- [Linux]ubuntu16.04 nginx彻底删除与重新安装
nginx彻底删除与重新安装 查看nginx正在运行的进程,如果有就kill掉 sudo netstat -ntlp | grep nginx sudo kill -9 进程id 删除nginx,pu ...
- java常见问题 ——运行报错1
错误1 打印乱码 相关代码 response.getWriter().print(tbItem.toString()); response.setContentType("text/html ...
- 交换机配置——STP实验(指定特定交换机为根桥)
一.实验目的:将三层交换机Switch3设置为根桥交换机 二.拓扑图如下: 三.具体步骤 先说明一下,四个交换机形成环路,为解决环路问题交换机会自动进行选举,选举出一个根源,根桥交换机会决定一个最佳路 ...
- MS14-068提权
• Ms14- • 库 • https://github.com/bidord/pykek • ms14-.py -u user@lab.com -s userSID -d dc.lab.com • ...
- [题解] [TJOI2011] 构造矩阵
题面 题解 很容易看出来是道网络流的题目, 要是没有这个字典序最小, 直接建图跑一遍就好了, 考虑如何输出字典序最小的方案 我们可以贪心地去选择, 若当前点可以选0就选0, 不能选0就选1, 有一点像 ...
- 用 Docker 搭建 ORACLE 数据库开发环境
用 Docker 搭建 ORACLE 数据库开发环境 需要安装 ORACLE 数据库做开发,直接安装的话因为各类平台的限制,非常复杂,会遇到很多问题. 还好,现在有 Docker 化的部署方式,省去很 ...
- shell编程-定时删除(30天)文件
1.创建shell touch /opt/auto-del-30-days-ago.sh chmod +x auto-del-30-days-ago.sh 2.编辑shell脚本: vi auto-d ...