zoukankan      html  css  js  c++  java
  • 使用SqlBulkCopy对数据进行批量插入

      在一些项目中,经常要执行批量的新增操作。如果每插入一条数据,就连接一次数据库,这样会带来很大的性能问题,使用SqlBulkCopy类可执行批量的插入操作,减少了与数据库的交互次数,提高了效率,具体做法如下:

    1.定义一个DataTable,并从数据库中获取表结构。

    2.遍历泛型集合,将集合中的每一个对象,赋值给DataTable中的每一行。

    3.获取一个DataTable后,通过使用SqlBulkCopy类执行批量操作。

    具体代码如下:

    1 using (SqlConnection con = new SqlConnection(constr))
    2 {
    3 //从数据库中拷贝表结构
    4 DataTable dt = new DataTable();
    5 SqlDataAdapter sda = new SqlDataAdapter("select * from Product_Target where 1=2", con);
    6 sda.Fill(dt);
    7 //将泛型集合的行拷贝到DataTable的行
    8 DataRow dr;
    9 foreach(Product product in listProduct)
    10 {
    11 dr = dt.NewRow();
    12 dr["productName"] = product.ProductName;
    13 dr["salePrice"] = product.SalePrice;
    14 dr["description"] = product.Description;
    15 dt.Rows.Add(dr);
    16 }
    17 //使用SqlBulkCopy执行批量复制
    18 using (SqlBulkCopy bulkCopy = new SqlBulkCopy(constr))
    19 {
    20 //每一批次中的行数
    21 bulkCopy.BatchSize = 10;
    22 //服务器上目标表的名称
    23 bulkCopy.DestinationTableName = "Product_Target";
    24 try
    25 {
    26 bulkCopy.WriteToServer(dt);
    27 }
    28 catch (Exception)
    29 {
    30 }
    31 }
    32 }

    对于SqlBulkCopy类的一些其他用法,请参考周公的这篇文章:http://blog.csdn.net/zhoufoxcn/archive/2007/11/07/1871514.aspx

  • 相关阅读:
    Python环境搭建
    Python简介
    第一个Java程序
    shiro实战(1)--web
    JDBC释放数据库连接
    IDEA(ideaIU) v2019.2.2详细安装破解教程
    ubuntu通过代理设置update源
    virtualbox FAIL(0x80004005) VirtualBox VT-x is not available (VERR_VMX_NO_VMX)
    Dubbo入门实例
    jsp模板
  • 原文地址:https://www.cnblogs.com/hnsdwhl/p/1929580.html
Copyright © 2011-2022 走看看