第一种方法:使用SqlCommand.EcecuteNonQurery()  效率最慢

第二种方法:使用SqlDataAdapter.Update(DataTable)   效率次之

第三种方法:使用SqlBulkCopy.WriteToServer(Datatable)  效率最快

        static void Main(string[] args)
{
string connString = "SERVER=.;DATABASE=Test;UID=sa;PWD=F123456789f"; //生成DataTable表
DataTable dt = new DataTable();
dt.Columns.Add("CompanyCode");
dt.Columns.Add("CompanyName");
dt.Columns.Add("Address");
dt.Columns.Add("Owner");
dt.Columns.Add("Memo");
for (int i = ; i < ; i++)
{
DataRow row = dt.NewRow();
row["CompanyName"] = "companyname" + string.Format("{0:00000}", i);
row["CompanyCode"] = "companycode" + string.Format("{0:00000}", i);
row["Address"] = "address" + string.Format("{0:00000}", i);
row["Owner"] = "owner" + string.Format("{0:00000}", i);
row["Memo"] = "memo" + string.Format("{0:00000}", i);
dt.Rows.Add(row);
} //第一种方法:使用SqlCommand.EcecuteNonQurery()方法插入
foreach (DataRow row in dt.Rows)
{
string sql = "insert into Mytable(CompanyName,CompanyCode,Address,Owner,Memo) values("
+ "'" + row["CompanyName"].ToString() + "'" + ","
+ "'" + row["CompanyCode"].ToString() + "'" + ","
+ "'" + row["Address"].ToString() + "'" + ","
+ "'" + row["Owner"].ToString() + "'" + ","
+ "'" + row["Memo"].ToString() + "'" + ")";
using (SqlConnection sqlcon = new SqlConnection(connString))
{
sqlcon.Open();
SqlCommand sqlcmd = new SqlCommand(sql, sqlcon);
sqlcmd.ExecuteNonQuery(); sqlcon.Close();
} } //第二种方法:使用SqlDataAdapter.Update(DataTable)
SqlCommand insertcmd = new SqlCommand("insert into Mytable(CompanyName,CompanyCode,Address,Owner,Memo) values(@CompanyName,@CompanyCode,@Address,@Owner,@Memo)", new SqlConnection(connString));
insertcmd.Parameters.Add("@CompanyName", SqlDbType.NChar, , "CompanyName");
insertcmd.Parameters.Add("@CompanyCode", SqlDbType.NChar, , "CompanyCode");
insertcmd.Parameters.Add("@Address", SqlDbType.NChar, , "Address");
insertcmd.Parameters.Add("@Owner", SqlDbType.NChar, , "Owner");
insertcmd.Parameters.Add("@Memo", SqlDbType.NChar, , "Memo");
SqlDataAdapter sqlda = new SqlDataAdapter();
sqlda.InsertCommand = insertcmd;
sqlda.Update(dt); //第三种方法:使用SqlBulkCopy.WriteToServer(Datatable)
SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connString, SqlBulkCopyOptions.UseInternalTransaction);
sqlbulkcopy.DestinationTableName = "Mytable"; //目标表,即数据要插入到哪个表去
sqlbulkcopy.ColumnMappings.Add("CompanyName","CompanyName"); //数据源列名与目标表的属性的映射关系 数据源是DataTable,目标表即数据库表
sqlbulkcopy.ColumnMappings.Add("CompanyCode", "CompanyCode");
sqlbulkcopy.ColumnMappings.Add("Address", "Address");
sqlbulkcopy.ColumnMappings.Add("Memo", "Memo");
sqlbulkcopy.ColumnMappings.Add("Owner", "Owner");
sqlbulkcopy.WriteToServer(dt); //数据源数据写入目标表 }

【C#-批量插入数据到数据库】DataTable数据批量插入数据的库三种方法:SqlCommand.EcecuteNonQurery(),SqlDataAdapter.Update(DataTable) ,SqlBulkCopy.WriteToServer(Datatable)的更多相关文章

  1. C# Entity Framework 更新数据的三种方法

    例: 实体类: public class TestDbContext : DbContext { public DbSet<Test> Tests { get; set; } public ...

  2. 【EF】EntityFramework 更新数据库字段的三种方法

    实体类 public class TestDbContext : DbContext { public DbSet<Test> Tests { get; set; } public Tes ...

  3. EntityFramework 更新数据库字段的三种方法

    例: 实体类: public class TestDbContext : DbContext { public DbSet<Test> Tests { get; set; } public ...

  4. DataTable数据批量写入数据库三种方法比较

    DataTable数据批量写入数据库三种方法比较 标签: it 分类: C#1)   insert循环插入:2)   sqldataadapter.update(dataset,tablename); ...

  5. DataTable 数据批量写入数据库三种方法比较

    DataTable数据批量写入数据库三种方法比较 1)   insert循环插入: 2)   sqldataadapter.update(dataset,tablename); 3)   sqlbul ...

  6. 去除DataTable重复数据的三种方法

    业务需求 最近做一个把源数据库的数据批次导出到目标数据库.源数据库是采集程序采集而来的原始数据库,所以需要对其进行一些处理(过滤一些为空,长度太短或太长,非法字符,重复数据)然后在进行入库. 其中要避 ...

  7. 去除DataTable重复数据的三种方法(转)

    转自:https://www.cnblogs.com/sunxi/p/4767577.html 业务需求 最近做一个把源数据库的数据批次导出到目标数据库.源数据库是采集程序采集而来的原始数据库,所以需 ...

  8. Mybatis+Mysql插入数据库返回自增主键id值的三种方法

    一.场景: 插入数据库的值需要立即得到返回的主键id进行下一步程序操作 二.解决方法: 第一种:使用通用mapper的插入方法 Mapper.insertSelective(record): 此方法: ...

  9. ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)

    http://www.cnblogs.com/zyqgold/archive/2010/11/22/1884779.html 在ASP.NET MVC框架中,将视图中的数据传递到控制器中,主要通过发送 ...

随机推荐

  1. VMware虚拟机下安装CentOS 6.10并配置访问外网

    VMware安装包以及CentOS 6.5安装包 链接:https://pan.baidu.com/s/1wQi5GSgp4klXhtd84aoMSA 提取码:9l5y 链接:https://pan. ...

  2. 南昌网络赛C.Angry FFF Party

    南昌网络赛C.Angry FFF Party Describe In ACM labs, there are only few members who have girlfriends. And th ...

  3. 【sublime Text】sublime Text3安装可以使xml格式化的插件

    应该有机会 ,会碰到需要格式化xml文件的情况. 例如,修改word转化的xml文件之后再将修改之后的xml文件转化为word文件. 但是,word另存的xml文件是没有格式的一片: 那怎么格式化 这 ...

  4. Java Web DNS域名解析

    一.什么是DNS DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串 ...

  5. asp.net 12 AJAX

    Javascript:ajax Ajax:get <%@ Page Language="C#" AutoEventWireup="true" CodeBe ...

  6. Ruby 参考教程

    Ruby 参考教程 https://www.ruby-lang.org/zh_cn/documentation/ http://ruby-doc.org/docs/ https://ruby-chin ...

  7. 【weixi】微信支付---微信公众号JSAPI支付

    一.JSAPI支付 JSAPI支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块完成支付.应用场景有: ◆ 用户在微信公众账号内进入商家公众号,打 ...

  8. vim之快捷键

    Vim 编辑器是一个基于命令行的工具,是传奇编辑器 vi 的增强版.尽管图形界面的富文本编辑有很多,但是熟悉 Vim 对于每一位 Linux 的使用者都能有所帮助——无论你是经验丰富的系统管理员,还是 ...

  9. python之字典一

    字典的定义: 前面我们说过列表,它适合于将值组织到一个结构中并且通过编号对其进行引用.字典则是通过名字来引用值的数据结构,并且把这种数据结构称为映射,字典中的值没有特殊的顺序,都存储在一个特定的键(k ...

  10. MySQL8.x msi版安装教程

    一.下载MySQL 官网下载地址 https://dev.mysql.com/downloads/windows/installer/8.0.html  下载第二个即可(虽然只有32位的 但是会同时安 ...