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数据批量写入数据库三种方法比较相关推荐

  1. java连接MySQL几种方法_Java连接MySQL数据库三种方法

    好久没有更新博客了!今天利用周目时学习了一下数据库mysql.介绍一下数据库的三种连接方式! 开发工具:Myeclipse MySQL5.6 MySQL连接驱动:mysql-connector-jav ...

  2. 芯片数据的差异分析主要包括三种方法 ANCOVA进行差异分析 为何不用deseq2

    Shared Gene Expression Alterations in Schizophrenia and Bipolar Disorder Expression of cilium-associ ...

  3. [转]asp.net导出数据到Excel的三种方法

    原文出处:asp.net导出数据到Excel的几种方法(1/3) .asp.net导出数据到Excel的几种方法(2/3).asp.net导出数据到Excel的几种方法(3/3) asp.net导出到 ...

  4. Go-读取文件和写入文件三种方法的操作

    打开和关闭文件操作: os.Open()函数能够打开一个文件,返回一个*File和一个err.对得到的文件实例调用close()方法能够关闭文件. package main import (" ...

  5. 监控器sd卡初始化怎么恢复数据?有这三种方法可尝试

    sd卡监控器数据能恢复吗?监控器sd卡初始化怎么恢复数据?如果您的监控器sd卡被初始化(格式化)导致数据丢失,建议立即停止使用sd卡,因为如果您继续使用sd卡,它可能会覆盖您要恢复的数据,导致无法恢复 ...

  6. 电脑数据怎么恢复?三种方法值得一试

    电脑数据怎么恢复?我们大多数时候都会用电脑作为我们的最主要的办公工具,那么作为我们一直在使用的办公工具,我们一定会出现一些问题,如果电脑不小心出现了数据丢失的情况,我们该怎么找回呢?以下几种方法我推荐 ...

  7. C++中访问类的私有数据成员的第三种方法

    我们知道,C++的类是有封装性的,那么对于私有数据成员我们如果想在类外访问,一般而言无外乎这么两种方法: 1.通过公有的成员函数 2.通过友元 这是两种通常的做法,还有一种是比较"反常&qu ...

  8. iphone传输 android,安卓苹果数据互传,三种方法教你怎样把iPhone数据迁移到安卓手机...

    下面来看看这两大利器的操作方法: iphone数据迁移到安卓手机用i换机大师迁移备忘录: 如果你的新手机是EMUI 9.0之前的系统:备忘录的存放地址在:"文件管理文件夹>内部存储&g ...

  9. 模型评价 - 判断数据模型拟合效果的三种方法

    数据建模的目的就是获得从自变量映射到因变量的函数,在建模的探索过程中,不同的方式总会得出不同的函数模型,而这些函数大多是由一些参数构成的,比如 y = f( x; w0, w1, w2, w3, .. ...

最新文章

  1. 南大算法设计与分析课程OJ答案代码(5)--割点与桥和任务调度问题
  2. c语言:找出1到4000中,数字的各位数之和能被4整除的数有多少个?
  3. echarts中graphic_使用Pyecharts进行奥运会可视化分析!
  4. 测试udp端口状态 curl_检测TCP/UDP端口的连通性
  5. VS 2017显示“高级保存选项”命令操作方法
  6. ITK:计算梯度各向异性扩散
  7. IOS基础之绘图函数的使用
  8. TCP协议的三次握手与四次挥手
  9. ad中电容用什么封装_【AD封装】VH3.96mm插件座子(带3D)
  10. The Quad - Directory Explorer(一款四窗口的文件资源管理器)
  11. 微信小程序开发学习笔记008--微信小程序项目02
  12. CDH 5.15.2 离线安装
  13. 归并排序执行次数_一文了解C/C++经典排序算法
  14. nx531j android版本,努比亚Z11(NX531J)安卓6.0 魅族Flyme6.7.12.29R刷机包 紫火版 20180108更新...
  15. 赖活不如好死?慎选你的死亡方式
  16. Spring:applicationContext.xml的头文件信息
  17. python牛顿迭代法求根例题_python求根算法
  18. java root权限_Android应用获取Root权限
  19. 微信小程序跳转公众号(引导关注)之 使用公众号消息
  20. i5 1155g7和i5 11300h 选哪个好

热门文章

  1. linux硬盘安装deepin,如何安装Deepin Linux?Deepin Linux安装体验
  2. python爬虫 文本含有nbsp该如何解决
  3. JVM的符号引用和直接引用
  4. keil C51 中使用虚拟串口调试串口
  5. 大连计算机学校地址到火车站,大连火车站地址及交通指南
  6. 企业应该如何实施CRM?
  7. 实施CRM前的五个要领
  8. 火车头采集器Python插件,今日头条资讯文章聚合采集插件说明文档!
  9. 趋势跟踪交易方法盈利的根本是什么?
  10. 《Maven实战》笔记整理