第一种方法:使用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. 神奇的负margin解决border“合并”

    如上图所示,这是一个分页样式,a:hover时,需要改变边框的颜色. 我们知道,除表格之外,其他标签的border是不能合并的.要解决这个问题,思路有三: 1.table布局(大概很少有人愿意在这里使 ...

  2. thinkPHP连接数据库报错:PDOException in Connection.php line 295

    跑去网上找了N多方法来尝试,重装apache.mysql.安装集成软件都试过了.错误一样. 后来细细分析,PDOException in Connection指的不就是PDO异常吗? 然后去了解了一些 ...

  3. C/S软件方案

    互联网时代客户端软件的一些方案 纯Native开发, C++/C#/duilib+C++(Windows), Objective-c(Mac) Qt(Windows/Mac) NW.js/Electr ...

  4. Docker结合Jenkins构建持续集成环境

    1.环境说明: jenkins+svn:192.168.71.142 测试环境:192.168.71.145 生产环境:192.168.71.148 操作系统:centos7. Maven3. Tom ...

  5. 23-Perl 面向对象

    1.Perl 面向对象Perl 中有两种不同地面向对象编程的实现:一是基于匿名哈希表的方式,每个对象实例的实质就是一个指向匿名哈希表的引用.在这个匿名哈希表中,存储来所有的实例属性.二是基于数组的方式 ...

  6. 【原创】大叔经验分享(74)nginx对静态文件加速

    通过location配置 location ~ \.html$ { add_header 'Cache-Control' 'no-cache'; } location ~ \.(js|css|gif| ...

  7. kali安装dnsdict6

    https://src.fedoraproject.org/lookaside/pkgs/thc-ipv6/thc-ipv6-2.7.tar.gz/2975dd54be35b68c140eb2a6b8 ...

  8. DDOS攻击脚本

    import sysimport osimport timeimport socketimport random#Code Timefrom datetime import datetimenow = ...

  9. R语言学习笔记:读取前n行数据

    常规读取 一般我们读取文件时都会读取全部的文件然后再进行操作,因为R是基于内存进行计算的. data <- read.table("C:\\Users\\Hider\\Desktop\ ...

  10. 13 Django之中间件

    一.什么是中间件 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好会影 ...