読者です 読者をやめる 読者になる 読者になる

ふるすたっくえんじにあっぽい人の日記

ASP .NET MVC (C#)、.NET Framework、iOS (Objective-c) アプリ、Androidアプリ (Java)、AWS、たまにLAMPとかプロジェクトマネジメントあたりのお話

【C#】DataTableを使ったBulkInsert

C#

はい、本日も表題の通りでございます!!

DataTableからBulkInsertするとき。
SqlHelper使うのもいんですけど、Application Blockとかめんどいんで、
System.Data系で実装しましたよっと。

using System.Data;
using System.Data.SqlClient;

namespace Hoge
{
    internal static class Hoge
    {
        internal static void BulkInsert(string connectionString, DataTable dataTable)
        {
            using (var dbConnection = new SqlConnection(connectionString))
            {
                dbConnection.Open();
                using (var bulkCopy = new SqlBulkCopy(dbConnection))
                {
                    bulkCopy.DestinationTableName = dataTable.TableName;
                    foreach (var column in dataTable.Columns)
                    {
                        bulkCopy.ColumnMappings.Add(column.ToString(), column.ToString());
                    }
                    bulkCopy.WriteToServer(dataTable);
                }
            }
        }
    }
}

呼び出す側はこんな感じ

var dataTable = new HogeDataSet.HogeDataTable();
var row = dataTable.NewHogeRow();
row.Name= "Hoge";
dataTable.AddHogeRow(row);
Hoge.BulkInsert("connectionString", dataTable);