はじめに
SQL Serverは、Microsoftによって開発された広く使用されているリレーショナルデータベース管理システムです。この記事では、C#を使ってSQL Serverデータベースに接続し、データを操作する基本的な方法を初心者向けに詳しく解説します。C#からSQL Serverへの接続は、ADO.NETのSystem.Data.SqlClient
名前空間を使用して行われ、これによりデータの読み取り、書き込み、更新が可能になります。
SQL Serverへの接続準備
必要なツールとライブラリ
C#でSQL Serverに接続するためには、主にSystem.Data.SqlClient
ライブラリが使用されます。このライブラリは.NET Frameworkに含まれているため、追加のインストール作業は必要ありません。ただし、SQL Serverをローカルまたはリモートで実行している必要があり、適切な接続情報が必要です。
SQL Serverの設定
SQL Serverがインストールされた環境に接続するには、以下の情報が必要です:
- サーバー名またはIPアドレス
- データベース名
- ユーザー名とパスワード(セキュリティの設定によってはWindows認証を使用)
接続文字列の設定
接続文字列は、SQL Serverへの接続に必要な情報を提供します。以下は一般的な接続文字列の形式です:
Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;
- Server – SQL Serverのインスタンスが実行されているサーバーのアドレス。
- Database – 接続したいデータベースの名前。
- User Id – データベースにアクセスするためのユーザーID。
- Password – 上記ユーザーIDのパスワード。
接続のコード例
using System;
using System.Data.SqlClient;
class Program {
static void Main() {
string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";
using (SqlConnection conn = new SqlConnection(connectionString)) {
conn.Open();
Console.WriteLine("データベース接続成功!");
}
}
}
このC#プログラムは、SQL Serverデータベースに接続する基本的な例です。以下、各部分の詳細な説明と役割を解説します。
コードの構成
- 名前空間のインポート:
using System;
using System.Data.SqlClient;
System
:基本的なシステム関連の機能を提供します。この場合、Console
クラスが含まれます。System.Data.SqlClient
:SQL Serverに接続し、データベース操作を行うためのクラスとメソッドを提供します。この名前空間には、SqlConnection
やSqlCommand
など、SQL Server専用のデータベース操作クラスが含まれています。
- クラスとメインメソッドの定義:
class Program {
static void Main() {
// コード本体
}
}
- この部分で
Program
というクラスが定義されており、その中のMain
メソッドがプログラムのエントリーポイント(開始点)です。
- データベース接続文字列の設定:
string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";
- 接続文字列はデータベースにアクセスするための詳細情報を含みます。それぞれの部分は次のようになります:
Server
: SQL Serverが動作しているサーバーのアドレスまたは名前。Database
: 接続するデータベースの名前。User Id
: データベースにログインするためのユーザーID。Password
: 上記ユーザーIDに対応するパスワード。
- データベースへの接続と接続成功の確認:
using (SqlConnection conn = new SqlConnection(connectionString)) {
conn.Open();
Console.WriteLine("データベース接続成功!");
}
SqlConnection
: SQL Serverに接続するためのクラス。ここで接続文字列をコンストラクタに渡してインスタンスを生成します。using
ステートメント:SqlConnection
オブジェクトのスコープを管理し、ブロックの終わりで自動的に接続を閉じる(Disposeメソッドを呼び出す)ことを保証します。conn.Open()
: データベースへの接続を開きます。このメソッドが成功すれば、データベースへの接続が確立され、例外が発生しない限り、「データベース接続成功!」とコンソールに表示されます。
データの操作
データベースへの接続が確立されたら、データの読み取り、追加、更新、削除を行うことができます。
データの読み取り
using (SqlCommand cmd = new SqlCommand("SELECT * FROM Employees", conn)) {
using (SqlDataReader reader = cmd.ExecuteReader()) {
while (reader.Read()) {
Console.WriteLine($"{reader["Name"]} - {reader["Position"]}");
}
}
}
このC#コードスニペットは、SQL Serverデータベースに対してSQLクエリを実行し、その結果を読み取るためのものです。各部分の役割と動作について詳しく解説します。
コードの構成
- SqlCommandの使用:
using (SqlCommand cmd = new SqlCommand("SELECT * FROM Employees", conn))
- ここでは、
SqlCommand
オブジェクトをインスタンス化しています。このオブジェクトはSQLクエリを実行するために使用されます。 "SELECT * FROM Employees"
は、Employees
テーブルからすべての列のデータを取得するSQL SELECTクエリです。conn
は、既に開かれているSQL Serverデータベースへの接続を表します。この接続はSqlConnection
オブジェクトを通じて行われます。
- SqlDataReaderの使用:
using (SqlDataReader reader = cmd.ExecuteReader())
ExecuteReader()
メソッドは、SQLコマンド(ここではSELECT文)の実行結果を取得するために使用されます。このメソッドは、クエリの結果を表すSqlDataReader
オブジェクトを返します。SqlDataReader
は、データベースから読み取ったデータに順次アクセスするためのものです。このオブジェクトはフォワードオンリーと読み取り専用のストリームを提供します。
- データの読み取りと表示:
while (reader.Read()) {
Console.WriteLine($"{reader["Name"]} - {reader["Position"]}");
}
Read()
メソッドは、SqlDataReader
が更に読み取るべきデータがあるかどうかをチェックします。データがあればtrue
を返し、それに基づいてループが続行されます。reader["Name"]
とreader["Position"]
は、それぞれEmployees
テーブルのName
列とPosition
列のデータを取得します。これらのデータは動的に取得され、コンソールに出力されます。
データの追加
using (SqlCommand cmd = new SqlCommand("INSERT INTO Employees (Name, Position) VALUES ('John Doe', 'Developer')", conn)) {
int rowsAffected = cmd.ExecuteNonQuery();
Console.WriteLine($"追加された行の数: {rowsAffected}");
}
データの更新
using (SqlCommand cmd = new SqlCommand("UPDATE Employees SET Position = 'Senior Developer' WHERE Name = 'John Doe'", conn)) {
int rowsAffected = cmd.ExecuteNonQuery();
Console.WriteLine($"更新された行の数: {rowsAffected}");
}
データの削除
using (SqlCommand cmd = new SqlCommand("DELETE FROM Employees WHERE Name = 'John Doe'", conn)) {
int rowsAffected = cmd.ExecuteNonQuery();
Console.WriteLine($"削除された行の数: {rowsAffected}");
}
まとめ
この記事では、C#を使用してSQL Serverデータベースに接続し、基本的なCRUD操作を行う方法を説明しました。これらの基本的なテクニックをマスターすることで、さらに複雑なデータベースアプリケーションの開発に進むことができます。続けて、トランザクション管理やエラーハンドリングなど、より高度なトピックに挑戦してみましょう。