C# で SQL Server にデータを挿入する: Dapper.NET を使ったチュートリアル

2024-06-27

Dapper.NET を使って C# リストを SQL Server に挿入する方法

このチュートリアルでは、Dapper.NET を使って C# リストを SQL Server に挿入する方法を説明します。

前提条件

このチュートリアルを始める前に、以下のものが必要です。

  • Visual Studio 2019 またはそれ以降
  • .NET Core 3.1 またはそれ以降
  • SQL Server 2016 またはそれ以降

手順

  1. プロジェクトを作成する

Visual Studio で新しいコンソール アプリケーション プロジェクトを作成します。

  1. Dapper.NET をインストールする

NuGet パッケージ マネージャーを使用して、Dapper.NET をプロジェクトにインストールします。

Install-Package Dapper
  1. データベース接続を設定する

以下のコードを使用して、SQL Server データベースへの接続を設定します。

using System.Data.SqlClient;

var connectionString = "Data Source=localhost;Initial Catalog=MyDatabase;Integrated Security=True";
using (var connection = new SqlConnection(connectionString))
{
    // データベース操作を行う
}
  1. C# リストを作成する

以下のコードを使用して、挿入するデータを含む C# リストを作成します。

var students = new List<Student>()
{
    new Student { Name = "John Doe", Age = 20 },
    new Student { Name = "Jane Doe", Age = 21 },
    new Student { Name = "Peter Jones", Age = 22 },
};
    connection.Open();
    
    var sql = @"INSERT INTO Students (Name, Age) VALUES (@Name, @Age)";
    
    foreach (var student in students)
    {
        connection.Execute(sql, student);
    }
    
    connection.Close();
    

    このコードは、INSERT INTO Students (Name, Age) VALUES (@Name, @Age) という SQL クエリを繰り返し実行し、各学生のデータ (NameAge) をパラメータとして渡します。

    Dapper.NET を使って C# リストを SQL Server に挿入するのは、非常に簡単です。このチュートリアルで説明した手順に従えば、誰でも簡単にできるようになります。

    注意事項

    このチュートリアルでは、基本的な例のみを説明しています。Dapper.NET は、より複雑なデータベース操作にも使用できます。詳細については、Dapper.NET のドキュメントを参照してください。




    using System.Data.SqlClient;
    using Dapper;
    
    public class Student
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            var connectionString = "Data Source=localhost;Initial Catalog=MyDatabase;Integrated Security=True";
    
            using (var connection = new SqlConnection(connectionString))
            {
                connection.Open();
    
                var students = new List<Student>()
                {
                    new Student { Name = "John Doe", Age = 20 },
                    new Student { Name = "Jane Doe", Age = 21 },
                    new Student { Name = "Peter Jones", Age = 22 },
                };
    
                var sql = @"INSERT INTO Students (Name, Age) VALUES (@Name, @Age)";
    
                foreach (var student in students)
                {
                    connection.Execute(sql, student);
                }
    
                connection.Close();
            }
        }
    }
    

    このコードは、以下のことを行います。

    1. Student クラスを定義します。このクラスには、NameAge という 2 つのプロパティがあります。
    2. students という名前の Student オブジェクトのリストを作成します。
    3. foreach ループを使用して、students リスト内の各学生について、SQL クエリを実行します。

    このコードをビルドして実行すると、3 人の学生が Students テーブルに挿入されます。

    注意事項

    • このコードは、SQL Server 2016 またはそれ以降を使用していることを前提としています。
    • 接続文字列を自分のデータベース接続情報に変更する必要があります。
    • Students テーブルは、以下のスキーマを持つ必要があります。
    CREATE TABLE Students (
        Id INT IDENTITY PRIMARY KEY,
        Name NVARCHAR(50) NOT NULL,
        Age INT NOT NULL
    );
    



    Dapper.NET を使って C# リストを SQL Server に挿入するその他の方法

    バルク挿入

    Dapper.NET は、BulkInsert メソッドを使用して、大量のデータを効率的に挿入する方法を提供しています。

    connection.Open();
    
    var students = new List<Student>()
    {
        new Student { Name = "John Doe", Age = 20 },
        new Student { Name = "Jane Doe", Age = 21 },
        new Student { Name = "Peter Jones", Age = 22 },
    };
    
    connection.BulkInsert(students, "Students");
    
    connection.Close();
    

    このコードは、BulkInsert メソッドを使用して、students リストを Students テーブルに挿入します。

    QueryMultiple メソッドを使用して、複数のクエリを実行し、結果をリストに格納することができます。

    connection.Open();
    
    var sql = @"
    INSERT INTO Students (Name, Age) VALUES (@Name, @Age);
    SELECT SCOPE_IDENTITY();
    ";
    
    var results = connection.QueryMultiple(sql, students);
    
    var studentIds = results.Read<int>().ToList();
    
    connection.Close();
    

    このコードは、まず INSERT クエリを実行して、各学生を Students テーブルに挿入します。次に、SCOPE_IDENTITY() 関数を使用して、挿入された各学生の ID を取得します。最後に、Read<int> メソッドを使用して、ID のリストを取得します。

    手動パラメータ化

    Dapper.NET は、手動でパラメータを指定して SQL クエリを実行する方法も提供しています。

    connection.Open();
    
    var sql = @"INSERT INTO Students (Name, Age) VALUES (@Name, @Age)";
    
    foreach (var student in students)
    {
        var parameters = new DynamicParameters();
        parameters.Add("@Name", student.Name);
        parameters.Add("@Age", student.Age);
    
        connection.Execute(sql, parameters);
    }
    
    connection.Close();
    

    このコードは、DynamicParameters クラスを使用して、SQL クエリのパラメータを定義します。次に、Execute メソッドを使用して、クエリを実行します。

    Dapper.NET を使って C# リストを SQL Server に挿入するには、さまざまな方法があります。どの方法を使用するかは、データ量、パフォーマンス要件、および個人的な好みによって異なります。


    dapper c# sql-server


    SQL Server で @@IDENTITY, SCOPE_IDENTITY(), OUTPUT およびその他の方法を使用して最後の ID を取得する方法

    SQL Server で INSERT ステートメントを実行した後、IDENTITY 列の最後の値を取得する必要がある場合があります。 これは、新しい行の関連 ID を取得したり、後続の INSERT ステートメントで使用するために最後の ID を保存したりするために行うことができます。...


    【SQL Server初心者向け】「オブジェクトが見つかりません」エラーの解決方法をわかりやすく解説

    オブジェクト名の誤りクエリ内で指定したオブジェクト名に誤りがある可能性があります。スペルミスや大小文字の誤り、または完全修飾名の省略などが考えられます。オブジェクト名は正確に記述されていることを確認してください。オブジェクトが存在しない指定したオブジェクトが実際に存在しない可能性があります。オブジェクトが削除されたか、名前が変更された可能性があります。オブジェクトが存在するかどうかを確認してください。...


    簡単操作でテーブル構造を複製: CREATE TABLE ... LIKE 構文

    CREATE TABLE . .. LIKE 構文を使用する最も簡単で便利な方法は、CREATE TABLE . .. LIKE 構文を使用する方法です。この構文は、既存のテーブルのスキーマをそのまま新しいテーブルに複製します。構文は以下の通りです。...


    SQL Server Reporting ServicesでTablix ヘッダー行を各ページに繰り返し表示する方法:詳細解説

    SQL Server Reporting Services (SSRS) のレポートビルダー 3.0 において、Tablix ヘッダー行を各ページに繰り返し表示するには、以下の手順に従います。Tablix プロパティを設定Tablix を選択します。...