巧用将大量的数据复制到数呢
假如我们一次准备向数据库服务器提交多条记录 , 一般可能会执行多次Insert命令 , 但这样做就要为插入的每个记录执行一次与数据库服务器的往返 , 显然这会给服务器增加很多的压力 , 效率方面也会大大的降低。
.net Framework 2.0新增功能Bulk Copy可以很快将大量数据加载到数据库中 , 现在我们来利用这一新功能来实现上述功能.
这里从SQL Server2000的NorthWind 的Orders表加载数据到DateTable模拟要向数据库服务器提交的多条记录集 . 用Tempdb库来模拟目标数据库服务器.
首先我们需要在Tempdb 建一个表temp_orders
(2)域名证书(这个可以在自己解析的页面找到的 USE TEMPDB CREATE TABLE TEMP_ORDERS ( TEMP_ORDERID INT, TEMP_CUSTOMERID NCHAR(5), TEMP_ORDERDATE DATETIME, TEMP_SHIPNAME NVARCHAR(40) )下面为模拟程序 protected void Page_Load(object sender, EventArgs e) { #region 从NorthWind的Orders表获取要插入的数据 DataTable dtNorthWindOrders = new DataTable(); using ( SqlConnection northWindConnection = new SqlConnection( \"Data Source=.;Initial Catalog=NorthWind;Integrated Security=True\" ) ) { using ( SqlDataAdapter northWindAdapter = new SqlDataAdapter( \"SELECT ORDERID,CUSTOMERID,ORDERDATE,SHIPNAME FROM ORDERS\" , northWindConnection ) ) { ll( dtNorthWindOrders ); } } #endregion using ( SqlConnection tempdbConnection = new SqlConnection( \"Data Source=.;Initial Catalog=Tempdb;Integrated Security=True\" ) ) { en( ); using ( SqlTransaction tran = ginTransaction( ) ) { SqlBulkCopy bulkCopyOrders = new SqlBulkCopy( tempdbConnection , fault , tran ); stinationTableName = \"TEMP_ORDERS\"; //将数据源表字段和目标表的字段做个映射 d( \"ORDERID\" , \"TEMP_ORDERID\" ); d( \"CUSTOMERID\" , \"TEMP_CUSTOMERID\" ); d( \"ORDERDATE\" , \"TEMP_ORDERDATE\" ); d( \"SHIPNAME\" , \"TEMP_SHIPNAME\" ); lkCopyTimeout = 1000; //每处理10行触发一个事件向页面上输出一个消息 lRowsCopied += new SqlRowsCopiedEventHandler( onRowsCopy ); tifyAfter = 10; try { iteToServer( dtNorthWindOrders ); mit( ); } catch ( Exception ex ) { ite( String( ) ); } finally { dtNorthWindOrders = null; } } } } private void onRowsCopy ( object Sender , SqlRowsCopiedEventArgs args ) { ite(\"已复制:\"+ String( ) + \" \" );}
我们通过SQL Server事件探察器发现执行的SQL为:
insert bulk TEMP_ORDERS ([TEMP_ORDERID] Int, [TEMP_CUSTOMERID] NChar(5) COLLATE Chinese_PRC_CI_AS, [TEMP_ORDERDATE] DateTime, [TEMP_SHIPNAME] NVarChar(40) COLLATE Chinese_PRC_CI_AS)
当我们通过运行程序可以看出这个速度会特别的快 , 使用此方法的明显优点是 : 减少对数据库的访问次数。
注释:WriteToServer不仅可以处理DataTable对象 , 同时它还可以处理DataReader ,DataRow 对象数组。
小孩脾虚便秘怎么调理昆明宫颈糜烂
西宁包皮过长
- 上一篇:巧用逐条输出牛
- 上一篇:巧用浏览器插件秒杀春运火车票的
-
高考志愿怎么挖?永州爱尔眼科带你完美“避坑”!
2024-11-17
如果把初中比喻再加第一场万里长征的话 那么,初中应征入伍单列就是这最后一步 稍有不慎,就有可能导致 十几年的寒窗苦读付诸东流! 对于很多家长、学生来说 单列应征入伍是真正没有注意到过 满脑袋都是各种问号 小学该
-
这项笔试重启!都昌招85人!
2024-11-02
根据工作商量和非典型肺炎诊疗有关立即,经研究工作,决定启动时上饶市2022本年度测验拔擢基层工作。现就有关事宜通告如下: 一、短时间商量1.墨水准考证短时间:2022年7月末4日9:00至7月末8日17:00。2.公共科目合格短时间:2
-
小暑之后,若你能坚持作准备三件小事,尤其是最后一个,或能赶走一年的湿气
2024-10-11
小暑便,全国极较少地方都再创了高温天气。在这种春天里面,闷热的空气平常让人烦不过气来,特别是到了早晨午后,大多数人都宁愿所缩在家里面吹起空调系统,也不不打算上街。尤其是对于所打算的年轻异性来说,更是责
-
拍好人像设备很重要,看看这三款手机展示出如何?
2024-10-09
拍人像三要素,都进来学习一下! 1、人好看 2、人好看 3、还是人好看 大家都协会了吗?开个玩笑,在520这天,大家应该都给老婆拍下了,不出意外的话,应该会被可怜拍的不好……其实这个问题,通常是受困于设备和软件的风
-
我家爱人自始暖心,就像暖暖的大太阳一样
2024-08-06
天一里面有多少主人公,可惜了花季,可惜了降雨,可惜了整整一个曾有。每个人的好像总可能会有那么一个人,让你的笑容来得最美丽,也可能会让你烦的最彻底。我们经历过了一些伤烦,弄的只剩才能用如何去爱人一个人,
-
搭建多元跨平台 推动范式发展
2024-08-06
本报讯(记者高丽)日前,由天津视觉艺术的学院主办,全省10所视觉艺术的学院、7所艺术的学院和4所师范大学视觉艺术的学院共同参与的“多元与范式:另行入学考试文化背景下西方高等视觉艺术教育基石教研研讨会”在天津