protected void button1_Click(object sender, EventArgs e)

{

DataTable dtSource = new DataTable();

dtSource.Columns.Add("Name", typeof(string));

dtSource.Columns.Add("Address", typeof(string));

DataRow dr;

for (int i = 0; i < 100 * 100; i++)

{

dr = dtSource.NewRow();

dr["Name"] = "Name" + i;

dr["Address"] = "Address" + i;

dtSource.Rows.Add(dr);

}

//将内存表dt中的1W条数据一次性插入到t_Data表中的相应列中

System.Diagnostics.Stopwatch st = new System.Diagnostics.Stopwatch();

st.Start();

string connStr = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;

using (SqlBulkCopy copy = new SqlBulkCopy(connStr))

{

//1 指定数据插入目标表名称

copy.DestinationTableName = "Student";

//2 告诉SqlBulkCopy对象 内存表中的 OrderNO1和Userid1插入到OrderInfos表中的哪些列中

copy.ColumnMappings.Add("Name", "Name");

copy.ColumnMappings.Add("Address", "Address");

//3 将内存表dt中的数据一次性批量插入到OrderInfos表中

copy.WriteToServer(dtSource);

}

st.Stop();

this.lblPL.InnerText="数据插入成功,总耗时为:" + st.ElapsedMilliseconds + "毫秒";

}

protected void button2_Click(object sender, EventArgs e)

{

DataTable dtSource = new DataTable();

dtSource.Columns.Add("ID", typeof(int));

dtSource.Columns.Add("Name", typeof(string));

dtSource.Columns.Add("Address", typeof(string));

DataRow dr;

for (int i = 0; i < 100 * 100; i++)

{

dr = dtSource.NewRow();

dr["Name"] = "Name" + i;

dr["Address"] = "Address" + i;

dtSource.Rows.Add(dr);

}

System.Diagnostics.Stopwatch st = new System.Diagnostics.Stopwatch(); //计算时间

st.Start();

string conn = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;     //连接数据库

string sqlText = "select * from Student";          //SQL语句,用于查出符合条件的数据库数据

//当上述工作完成之后,我们调用SqlDataAdapter的Fill()方法,将查询出来的数据表内容填充的一张DataTable里面

SqlDataAdapter SDA = new SqlDataAdapter(sqlText, conn);

SDA.Fill(dtSource);

//这个SqlCommandBuilder用来自动生成添加、删除、修改的语句,注意这个参数是刚才建立的SqlDataAdapter。

SqlCommandBuilder SCB = new SqlCommandBuilder(SDA);

SDA.Update(dtSource);         //数据录入

st.Stop();

this.lblCT.InnerText="数据插入成功,总耗时为:" + st.ElapsedMilliseconds + "毫秒";

}

SqlServer的两种插入方式效率对比的更多相关文章

  1. Java多线程13:读写锁和两种同步方式的对比

    读写锁ReentrantReadWriteLock概述 大型网站中很重要的一块内容就是数据的读写,ReentrantLock虽然具有完全互斥排他的效果(即同一时间只有一个线程正在执行lock后面的任务 ...

  2. spring-data-mongodb两种实现方式对比

    spring-data-mongodb两种实现方式对比 参考链接:https://blog.csdn.net/feinifi/article/details/83752862

  3. 固态硬盘和机械硬盘的比较和SQLSERVER在两种硬盘上的性能差异

    固态硬盘和机械硬盘的比较和SQLSERVER在两种硬盘上的性能差异 在看这篇文章之前可以先看一下下面的文章: SSD小白用户收货!SSD的误区如何解决 这样配会损失性能?实测6种特殊装机方式 听说固态 ...

  4. 两种include方式及filter中的dispatcher解析

    两种include方式 我自己写了一个original.jsp,另外有一个includedPage.jsp,我想在original.jsp中把includedPage.jsp引进来有两种方式: 1.& ...

  5. .net 各种序列化方式效率对比

    在服务与服务之间传输的是二进制数据,而在此之前有多种方法将数据内容进行序列化来减小数据传递大小,现针对于目前主流的几种序列化方式做了简单数据统计对比. 先做下简单介绍↓↓↓ 1.protobuf-ne ...

  6. 软件公司的两种管理方式 总体来说,这个世界上存在两种不同的软件公司的组织结构。我把他们叫做 Widget Factory(小商品工厂) 和 Film Crews(电影工作组

    软件公司的两种管理方式 一个简单的回答应该是——“因为在我们的社会里,我们总是会认为薪水和会和职位的层次绑在一起”.但是,这个答案同时也折射出一个事实——我们的薪资是基于我们的所理解的价值,但这并没有 ...

  7. python笔记-20 django进阶 (model与form、modelform对比,三种ajax方式的对比,随机验证码,kindeditor)

    一.model深入 1.model的功能 1.1 创建数据库表 1.2 操作数据库表 1.3 数据库的增删改查操作 2.创建数据库表的单表操作 2.1 定义表对象 class xxx(models.M ...

  8. 串的两种模式匹配方式(BF/KMP算法)

    前言 串,又称作字符串,它是由0个或者多个字符所组成的有限序列,串同样可以采用顺序存储和链式存储两种方式进行存储,在主串中查找定位子串问题(模式匹配)是串中最重要的操作之一,而不同的算法实现有着不同的 ...

  9. Android中BroadcastReceiver的两种注册方式(静态和动态)详解

    今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...

随机推荐

  1. 【题解】洛谷P4145 花神游历各国(线段树)

    洛谷P4145:https://www.luogu.org/problemnew/show/P4145 思路 这道题的重点在于sqrt(1)=1 一个限制条件 与正常线段树不同的是区间修改为开方 那么 ...

  2. ES6系列文章 异步神器async-await

    关于异步处理,ES5的回调使我们陷入地狱,ES6的Promise使我们脱离魔障,终于.ES7的async-await带我们走向光明.今天就来学习一下 async-await. async-await和 ...

  3. Python(一)数据结构和算法的20个练习题问答

    数据结构和算法 Python 提供了大量的内置数据结构,包括列表,集合以及字典.大多数情况下使用这些数据结构是很简单的. 但是,我们也会经常碰到到诸如查询,排序和过滤等等这些普遍存在的问题. 因此,这 ...

  4. JAVA中时间格式转换

    1.将任意日期格式的字符串转换为指定格式的字符串 //默认格式 String s1 = "20190110133236"; //给定格式 String s2 = "201 ...

  5. Paths with -a does not make sense.

    最近开始使用为windows的系统,进行git操作的时候出现了一个小问题. 使用命令: E:\IdeaProjects\mmall>git commit -am 'first commit in ...

  6. 19-3-4 Python进制转换;bool str int三者之间的转换;字符串的索引,切片;for循环的使用

    进制转换: 二进制转十进制:  0010 1111 = 1*2**0+1*2**1+1*2**2+1*2**3+1*2**5 十进制转换二进制: 用十进制数除2逆序取余 --->101010 布 ...

  7. linux安装完jenkins无法访问的问题

    jenkins是一个持续集成部署的工具,非常好用,当然,有些细节问题还是需要注意的.当我们兴高采烈的安装完jenkins的时候,然后发现并不能访问,真是气死了. 这个时候就要一步一步检测问题出在哪. ...

  8. JFinal DB.tx()事务回滚及lambda表达式应用

    JFinal DB.tx()事务回滚 在要往数据库操作多条数据时,就需要用到事务,JFinal中有封装好的事务应用 写法: Db.tx(new IAtom(){ @Override public bo ...

  9. VirtualBox复制的虚拟机无法获取IP解决办法

    自从建立了这个账号后写了一篇,好几年没来了,今天来看看,顺便分享一下. 昨天晚上想玩玩zookeeper集群,在vb里复制了一台主机,可怎么也无法获取IP,经研究,终于还是解决了. 1.复制主机时勾选 ...

  10. SSM+poi导入和导出

    最原始数据 导入成功后 下载数据 下载后的数据显示 数据变成16条 点击导出可选择 导了两次  看数据变化 数据库字段在下面地址给出 首先贴出Dao层 List<User> findAll ...