DataTable数据批量写入数据库三种方法比较
DataTable数据批量写入数据库三种方法比较
标签: it 分类: C#
1) insert循环插入;
2) sqldataadapter.update(dataset,tablename);
3) sqlbulkcopy.WriteToServer(datatable);
1、生成测试的datatable表,表结构如下:
UniqueID(主键,自动增长) | CompanyName | CompanyCode | Address | Owner | Memo
共6个字段。
SqlConnection sqlconnection = new SqlConnection(connectionString);
SqlDataAdapter sqldataadapter = new SqlDataAdapter("select * from Table_1 where 1=2", sqlconnection);
DataSet dataset = new DataSet();
sqldataadapter.Fill(dataset, "Table_1");
DataTable datatable = dataset.Tables[0];
//生成20000条记录
for (int i = 0; i < 20000; i++)
{
DataRow datarow = datatable.NewRow();
datarow["CompanyName"] = "companyname"+string.Format("{0:0000}",i);
datarow["CompanyCode"] = "companycode" + string.Format("{0:0000}", i);
datarow["Address"] = "address" + string.Format("{0:0000}", i);
datarow["Owner"] = "owner" + string.Format("{0:0000}", i);
datarow["Memo"] = "memo" + string.Format("{0:0000}", i);
datatable.Rows.Add(datarow);
}
复制代码
2、使用sqlcommand.executenonquery()方法插入
foreach (DataRow datarow in datatable.Rows)
{
string sql = "INSERT INTO [Table_1]([CompanyName],[CompanyCode],[Address],[Owner],
)" +
"VALUES('" + datarow["CompanyName"].ToString() + "'" +
",'" + datarow["CompanyCode"].ToString() + "'" +
",'" + datarow["Address"].ToString() + "'" +
",'" + datarow["Owner"].ToString() + "'" +
",'" + datarow["Memo"].ToString() + "')";
using (SqlConnection sqlconn = new SqlConnection(connectionString))
{
sqlconn.Open(); SqlCommand sqlcommand = new SqlCommand(sql, sqlconn);
sqlcommand.ExecuteNonQuery();
sqlconn.Close();
}
}
复制代码
插入20000条记录时间:00:00:29.7336000
3、使用sqldataadapter.update(dataset,tablename);
SqlCommand insertcommand = new SqlCommand("INSERT INTO [Table_1]([CompanyName],[CompanyCode],[Address],[Owner],
)" +
"VALUES(@CompanyName, @CompanyCode,@Address,@Owner,@Memo)",new SqlConnection(connectionString));
insertcommand.Parameters.Add("@CompanyName", SqlDbType.NChar, 50, "CompanyName");
insertcommand.Parameters.Add("@CompanyCode", SqlDbType.NChar, 25, "CompanyCode");
insertcommand.Parameters.Add("@Address", SqlDbType.NChar, 255, "Address");
insertcommand.Parameters.Add("@Owner", SqlDbType.NChar, 25, "Owner");
insertcommand.Parameters.Add("@Memo", SqlDbType.NChar, 255, "Memo");
sqldataadapter.InsertCommand = insertcommand;
sqldataadapter.Update(dataset, "Table_1");
复制代码
插入20000条记录时间:00:00:22.8938000
4、使用sqlbulkcopy.writetoserver(datatable)
SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction);
sqlbulkcopy.DestinationTableName = "Table_1";//数据库中的表名
sqlbulkcopy.WriteToServer(dataset.Tables[0]);
复制代码
插入20000条记录时间:00:00:00.3276000
所以说速度是sqlbulkcopy最快,sqldataadapter.update()次之,sqlcommand.ExecuteNonQuery()最慢。
转载于:https://www.cnblogs.com/nxxshxf/p/6195333.html
DataTable数据批量写入数据库三种方法比较相关推荐
- java连接MySQL几种方法_Java连接MySQL数据库三种方法
好久没有更新博客了!今天利用周目时学习了一下数据库mysql.介绍一下数据库的三种连接方式! 开发工具:Myeclipse MySQL5.6 MySQL连接驱动:mysql-connector-jav ...
- 芯片数据的差异分析主要包括三种方法 ANCOVA进行差异分析 为何不用deseq2
Shared Gene Expression Alterations in Schizophrenia and Bipolar Disorder Expression of cilium-associ ...
- [转]asp.net导出数据到Excel的三种方法
原文出处:asp.net导出数据到Excel的几种方法(1/3) .asp.net导出数据到Excel的几种方法(2/3).asp.net导出数据到Excel的几种方法(3/3) asp.net导出到 ...
- Go-读取文件和写入文件三种方法的操作
打开和关闭文件操作: os.Open()函数能够打开一个文件,返回一个*File和一个err.对得到的文件实例调用close()方法能够关闭文件. package main import (" ...
- 监控器sd卡初始化怎么恢复数据?有这三种方法可尝试
sd卡监控器数据能恢复吗?监控器sd卡初始化怎么恢复数据?如果您的监控器sd卡被初始化(格式化)导致数据丢失,建议立即停止使用sd卡,因为如果您继续使用sd卡,它可能会覆盖您要恢复的数据,导致无法恢复 ...
- 电脑数据怎么恢复?三种方法值得一试
电脑数据怎么恢复?我们大多数时候都会用电脑作为我们的最主要的办公工具,那么作为我们一直在使用的办公工具,我们一定会出现一些问题,如果电脑不小心出现了数据丢失的情况,我们该怎么找回呢?以下几种方法我推荐 ...
- C++中访问类的私有数据成员的第三种方法
我们知道,C++的类是有封装性的,那么对于私有数据成员我们如果想在类外访问,一般而言无外乎这么两种方法: 1.通过公有的成员函数 2.通过友元 这是两种通常的做法,还有一种是比较"反常&qu ...
- iphone传输 android,安卓苹果数据互传,三种方法教你怎样把iPhone数据迁移到安卓手机...
下面来看看这两大利器的操作方法: iphone数据迁移到安卓手机用i换机大师迁移备忘录: 如果你的新手机是EMUI 9.0之前的系统:备忘录的存放地址在:"文件管理文件夹>内部存储&g ...
- 模型评价 - 判断数据模型拟合效果的三种方法
数据建模的目的就是获得从自变量映射到因变量的函数,在建模的探索过程中,不同的方式总会得出不同的函数模型,而这些函数大多是由一些参数构成的,比如 y = f( x; w0, w1, w2, w3, .. ...
最新文章
- 南大算法设计与分析课程OJ答案代码(5)--割点与桥和任务调度问题
- c语言:找出1到4000中,数字的各位数之和能被4整除的数有多少个?
- echarts中graphic_使用Pyecharts进行奥运会可视化分析!
- 测试udp端口状态 curl_检测TCP/UDP端口的连通性
- VS 2017显示“高级保存选项”命令操作方法
- ITK:计算梯度各向异性扩散
- IOS基础之绘图函数的使用
- TCP协议的三次握手与四次挥手
- ad中电容用什么封装_【AD封装】VH3.96mm插件座子(带3D)
- The Quad - Directory Explorer(一款四窗口的文件资源管理器)
- 微信小程序开发学习笔记008--微信小程序项目02
- CDH 5.15.2 离线安装
- 归并排序执行次数_一文了解C/C++经典排序算法
- nx531j android版本,努比亚Z11(NX531J)安卓6.0 魅族Flyme6.7.12.29R刷机包 紫火版 20180108更新...
- 赖活不如好死?慎选你的死亡方式
- Spring:applicationContext.xml的头文件信息
- python牛顿迭代法求根例题_python求根算法
- java root权限_Android应用获取Root权限
- 微信小程序跳转公众号(引导关注)之 使用公众号消息
- i5 1155g7和i5 11300h 选哪个好