1. 简单使用:
  2.     private void UpdateTitle(DataTable dt)
  3. {
  4.  
  5. if (dt != null && dt.Rows.Count > )
  6. {
  7. using (SqlBulkCopy sbc = new SqlBulkCopy(SqlHelper.connectionString))
  8. {
  9. sbc.BatchSize = dt.Rows.Count;//每批次操作数量
  10. sbc.BulkCopyTimeout = ;//操作允许的超时时间 单位:秒 (超时则事务不提交)
  11. sbc.DestinationTableName = "TB_product_NewTitle"; //数据库对应表名
  12. sbc.WriteToServer(dt);
  13. }
  14. }
  15. }
  1. 如果出现 DataTable中的字段和数据库的字段不对应的异常信息,需要手动的为DataTable的列 数据库中的列 绑定
  1. 注意:dataColumns的数据类型,一定要和数据库一样,不然各种报错
  2. 字段也区分大小写,一定要注意
  3.  
  4. /// <summary>
  5. /// 批量更新数据到数据库(DataTable列结构保持和数据库表一致)
  6. /// </summary>
  7. /// <param name="dt"></param>
  8. public static void BulkCopyData(Queue<QueueMessage> myQ, int SiteID,int max)
  9. {
  10. if (myQ != null && myQ.Count > )
  11. {
  12. using (SqlBulkCopy sbc = new SqlBulkCopy(SqlHelper.con))
  13. {
  14. QueueMessage qm = new QueueMessage();
  15. DataTable dt = new DataTable();
  16. dt.Columns.AddRange(
  17.               new DataColumn[] {
  18.               new DataColumn("Sender", typeof(Int32)),
  19.               new DataColumn("Receiver", typeof(Int32)),
  20.               new DataColumn("Content", typeof(string)),
  21.               new DataColumn("CreateTime", typeof(DateTime)),
  22.               new DataColumn("SenderType", typeof(int))
                });
  23. int qcount=;
  24. if (max > )
  25. qcount = max;
  26. else
  27. qcount = myQ.Count();
  28. for (int i = ; i < qcount; i++)
  29. {
  30. qm = myQ.Dequeue() as QueueMessage;
  31. DataRow dr = dt.NewRow();
  32. dr["Sender"] = qm.Sender;
  33. dr["Receiver"] = qm.Receiver;
  34. dr["Content"] = qm.Content;
  35. dr["CreateTime"] = qm.CreateTime;
  36. dr["SenderType"] = qm.SenderType;
  37. dt.Rows.Add(dr);
  38. }
                //把DataTable的列名和数据库的列名绑定
  39. sbc.ColumnMappings.Add("Sender", "Sender");
  40. sbc.ColumnMappings.Add("Receiver", "Receiver");
  41. sbc.ColumnMappings.Add("Content", "Content");
  42. sbc.ColumnMappings.Add("CreateTime", "CreateTime");
  43. sbc.ColumnMappings.Add("SenderType", "SenderType");
  44. sbc.BatchSize = dt.Rows.Count;//每批次操作数量
  45. sbc.BulkCopyTimeout = ;//操作允许的超时时间 单位:秒 (超时则事务不提交)
  46. sbc.DestinationTableName = "TB_Message_" + SiteID;//数据库对应表名
  47. sbc.WriteToServer(dt);
  48. }
  49. }
  50. }

DataTable 批量插入SqlServer数据库 使用:SqlBulkCopy的更多相关文章

  1. .net批量插入SqlServer数据库的方法:

    using System;using System.Collections.Generic;using System.Configuration;using System.Data;using Sys ...

  2. java 高效批量插入 sqlserver 数据库

    插入1000条:347毫秒 插入1W条:4086毫秒 插入10W条:47953毫秒 同理,批量更新也可以用此方法,只不过没有插入的快, 更新1000条:90秒 更新100条:9秒

  3. C# 数据批量插入到数据库SqlBulkCopy(源数据类型:List<T> Or DataTable)

      /*_____________________ List<T>类型数据 To Sql_______________________________*/ /// <summary& ...

  4. .net使用SqlBulkCopy类操作DataTable批量插入数据库数据,然后分页查询坑

    在使用SqlBulkCopy类操作DataTable批量插入数据,这种操作插入数据的效率很高,就会导致每一条数据在保存的时间基本一样,在我们分页查询添加的数据是,使用数据的添加时间来排序就会出现每页的 ...

  5. C#批量将数据插入SQLServer数据库

    Database db = CreateDatabase();                var varConnnection = db.CreateConnection();     //获取连 ...

  6. DataTable 获取列名 DataTable批量更新至数据库

    好久没写东西了,这几个月也没下功夫钻研技术,愧疚啊.说下最近刚学会的DataTable 的用法吧,新手适合看下. 1 DataTable 获取列名 在处理数据的时候大家都会用到模型,从datatabl ...

  7. 批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor

    批量解密SQLSERVER数据库中的各种对象的工具dbForge SQL Decryptor2.1.11 之前写过一篇文章,使用redgate公司的SQL PROMPT工具,但是不太方便 SQLPRO ...

  8. MySQL数据库工具类之——DataTable批量加入MySQL数据库(Net版)

    MySQL数据库工具类之——DataTable批量加入数据库(Net版),MySqlDbHelper通用类希望能对大家有用,代码如下: using MySql.Data.MySqlClient; us ...

  9. ASP.NET MVC NPOI导入Excel DataTable批量导入到数据库

    使用NPOI导入Excel 首先在MVC项目中导入NPOI 查询NPOI安装,排序依据,选择:最高下载量,选择第一个. 在控制器中创建ExcelController 在Index视图中写入代码: @u ...

随机推荐

  1. ASP.net封装

    设计如下: 代码: using System; using System.IO; public partial class 四则运算 : System.Web.UI.Page { protected ...

  2. ArcMap计算PolyLine中点VBA

    Dim pGeo As IGeometrySet pGeo = [Shape]Dim pPolyline As IPolylineSet pPolyline = pGeoDim pCurve As I ...

  3. PHP面向对象实例(图形计算器)

    效果:

  4. 深入理解JavaScript系列:为什么03-0.2不等于0.1

    五一宅家看书,所以接着更新一篇文章. 今天讲一下为什么03-0.2不等于0.1这个问题. 有点标题党的味道,在JavaScript中,当你试着对小数进行加减运算时,有时候会发现某个结果并非我们所想的那 ...

  5. Unity3D教程:茄子童萌會

    http://s.epb.idv.tw/han-shi-ku/unity Unity 0000 Unity3D學習之路 - C#學習筆記(一) 0001 Unity3D學習之路 - C#學習筆記(二) ...

  6. 昨天晚上画了个带apple的图:ide插件与php和xdebug通信原理图,周末写1个调试器。

    昨天晚上画了个带apple的图:ide插件与php和xdebug通信原理图,周末写1个调试器.

  7. IC卡复位应答ATR的数据元和它们的意义

    ISO/IEC 7816-3标准中对ATR的数据串和数据元做了规定和描述.ATR的数据元和它们的意义: 数据元 说明 TS 起始字符 T0 格式字符 TA1,TB1,TC1,TD1,... 接口字符 ...

  8. Linux记录从此开始

    Linux记录从此开始~ 希望自己多写代码同时多记录~

  9. python数据结构与算法

    最近忙着准备各种笔试的东西,主要看什么数据结构啊,算法啦,balahbalah啊,以前一直就没看过这些,就挑了本简单的<啊哈算法>入门,不过里面的数据结构和算法都是用C语言写的,而自己对p ...

  10. 新浪微博AppKey大集合(share)

    本文转自:http://blog.sina.com.cn/s/blog_9e1ea13a01017y3n.html ------------------------------------------ ...