zoukankan      html  css  js  c++  java
  • c#批量插入数据库Demo

    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    using System.Diagnostics;
    using System.Linq;
    using System.Text;
    
    namespace SqlServerBulkInsert
    {
        class Program
        {
            public static void BulkToDB(DataTable dt)
            {
                SqlConnection sqlConn = new SqlConnection(
                    ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString);
                SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn);
                bulkCopy.DestinationTableName = "BulkTestTable";
                bulkCopy.BatchSize = dt.Rows.Count;
    
                try
                {
                    sqlConn.Open();
                    if (dt != null && dt.Rows.Count != 0)
                        bulkCopy.WriteToServer(dt);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    sqlConn.Close();
                    if (bulkCopy != null)
                        bulkCopy.Close();
                }
            }
            public static DataTable GetTableSchema()
            {
                DataTable dt = new DataTable();
                dt.Columns.AddRange(new DataColumn[]{  
                 new DataColumn("Id",typeof(int)),  
                 new DataColumn("UserName",typeof(string)),  
                 new DataColumn("Pwd",typeof(string))});
    
                return dt;
            }
            static void Main(string[] args)
            {
                Stopwatch sw = new Stopwatch();
                for (int multiply = 0; multiply < 10; multiply++)
                {
                    DataTable dt = GetTableSchema();
                    for (int count = multiply * 100000; count < (multiply + 1) * 100000; count++)
                    {
                        DataRow r = dt.NewRow();
                        r[0] = count;
                        r[1] = string.Format("User-{0}", count * multiply);
                        r[2] = string.Format("Pwd-{0}", count * multiply);
                        dt.Rows.Add(r);
                    }
                    sw.Start();
                    BulkToDB(dt);
                    sw.Stop();
                    Console.WriteLine(string.Format("Elapsed Time is {0} Milliseconds", sw.ElapsedMilliseconds));
                }
    
                Console.ReadLine();
            }
        }
    }
    
    
    //------------------以下是测试数据库及表的建立sql语句————————————————————————————
    
    USE [BulkTestDB]
    GO
    
    /****** Object:  Table [dbo].[BulkTestTable]    Script Date: 09/22/2016 09:38:04 ******/
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    SET ANSI_PADDING ON
    GO
    
    CREATE TABLE [dbo].[BulkTestTable](
        [Id] [int] NOT NULL,
        [UserName] [nvarchar](32) NULL,
        [Pwd] [varchar](16) NULL,
    PRIMARY KEY CLUSTERED 
    (
        [Id] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    GO
    
    SET ANSI_PADDING OFF
    GO

    FROM:http://www.cnblogs.com/rengke2002/p/5895004.html
  • 相关阅读:
    网络爬虫之框架(Scrapy)
    模拟投币试验
    [LeetCode#177]Nth Highest Salary
    Windows Server 2008 各版本功能差异与比较各版本概观--转载
    Win2008 R2下Server Core常用命令小结
    powershell 中用Sqlps管理我台sqlserver 2008r2
    初识 Markdown
    React 入门(3): 严格模式 ReactDOM
    ES6 类的正确定义方式 公有类字段 getter / setter
    Lodash 去抖动 节流
  • 原文地址:https://www.cnblogs.com/chunhui212/p/5902530.html
Copyright © 2011-2022 走看看