C# で SQL Server にデータを挿入する: Dapper.NET を使ったチュートリアル
Dapper.NET を使って C# リストを SQL Server に挿入する方法
このチュートリアルでは、Dapper.NET を使って C# リストを SQL Server に挿入する方法を説明します。
前提条件
このチュートリアルを始める前に、以下のものが必要です。
- Visual Studio 2019 またはそれ以降
- .NET Core 3.1 またはそれ以降
- SQL Server 2016 またはそれ以降
手順
- プロジェクトを作成する
Visual Studio で新しいコンソール アプリケーション プロジェクトを作成します。
- Dapper.NET をインストールする
NuGet パッケージ マネージャーを使用して、Dapper.NET をプロジェクトにインストールします。
Install-Package Dapper
- データベース接続を設定する
以下のコードを使用して、SQL Server データベースへの接続を設定します。
using System.Data.SqlClient;
var connectionString = "Data Source=localhost;Initial Catalog=MyDatabase;Integrated Security=True";
using (var connection = new SqlConnection(connectionString))
{
// データベース操作を行う
}
- 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 クエリを繰り返し実行し、各学生のデータ (Name
と Age
) をパラメータとして渡します。
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();
}
}
}
このコードは、以下のことを行います。
Student
クラスを定義します。このクラスには、Name
とAge
という 2 つのプロパティがあります。students
という名前のStudent
オブジェクトのリストを作成します。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