第一种方法:使用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. 查找担保圈-step5-比较各组之间的成员,对组的包含性进行查询,具体见程序的注释-版本2

    USE [test] GO /****** Object: StoredProcedure [dbo].[p03_get_groupno_e2] Script Date: 2019/7/8 15:01 ...

  2. PAT B1031 查验身份证(15)

    AC代码 #include <cstdio> #include <iostream> using namespace std; const int max_n = 110; / ...

  3. go get 安装一个特定版本的包失败解决方法

    场景描述 go get 下载第三方包golang gin框架时,会去下载gopkg.in/go-playground/validator.v8包以及gopkg.in/yaml.v2包,gopkg.in ...

  4. Web前端开发JavaScript提高

    JavaScript 一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型,它的解释器被称为JavaScript引擎,是浏览器的一部分,并且是被广泛用于客户端的脚本语言,JavaS ...

  5. 转 RTSP客户端模拟器(TCP方式,Python实现)

    转自: http://www.cnblogs.com/MikeZhang/archive/2012/10/29/rtspTcpClient_DSS_20121029.html 由于某种需求,工作中需要 ...

  6. Spring 的 Bean 管理(XML 方式)

    Spring 的 Bean 管理(XML 方式) 1. 三种实例化 Bean 的方式 使用类构造器实例化(默认无参数) 使用静态工厂方法实例化(简单工厂模式) 使用实例工厂方法实例化(工厂方法模式) ...

  7. Facebook 一个热搜帖,美国一个老人癌症不治最后的心愿是跟儿子喝啤酒。

    今天早上起床看到这个Facebook上的热搜帖.太感动了.这个老人癌症不治后最后心愿是跟他的儿子们一起喝一次啤酒.这个帖子被他孙子贴上网以后牵动了千万人的心.

  8. PS 中混合模式

    1.正常模式 2. 溶解 3. 变暗    :  把两幅图中较暗的区域显示出来 4.正片叠底   总体变暗,把图层中较浅的颜色由下一图层较深的颜色显现(和滤色相反) 7. 深色  取较小的颜色 8. ...

  9. hadoop-2.7.3安装kafka_2.11-2.1.0

    软件下载: http://mirrors.shu.edu.cn/apache/kafka/2.1.0/kafka_2.11-2.1.0.tgz 把下载好的包kafka_2.11-2.1.0.tgz 上 ...

  10. 第三方库-正则re

    Python正则表达式里的单行re.S和多行re.M模式 Python 的re模块内置函数几乎都有一个flags参数,以位运算的方式将多个标志位相加.其中有两个模式:单行(re.DOTALL, 或者r ...