PR

【C#入門】データベースに接続しよう!SQL Server編

システム開発

はじめに

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データベースに接続する基本的な例です。以下、各部分の詳細な説明と役割を解説します。

コードの構成

  1. 名前空間のインポート:
   using System;
   using System.Data.SqlClient;
  • System:基本的なシステム関連の機能を提供します。この場合、Consoleクラスが含まれます。
  • System.Data.SqlClient:SQL Serverに接続し、データベース操作を行うためのクラスとメソッドを提供します。この名前空間には、SqlConnectionSqlCommand など、SQL Server専用のデータベース操作クラスが含まれています。
  1. クラスとメインメソッドの定義:
   class Program {
       static void Main() {
           // コード本体
       }
   }
  • この部分で Program というクラスが定義されており、その中の Main メソッドがプログラムのエントリーポイント(開始点)です。
  1. データベース接続文字列の設定:
   string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";
  • 接続文字列はデータベースにアクセスするための詳細情報を含みます。それぞれの部分は次のようになります:
  • Server: SQL Serverが動作しているサーバーのアドレスまたは名前。
  • Database: 接続するデータベースの名前。
  • User Id: データベースにログインするためのユーザーID。
  • Password: 上記ユーザーIDに対応するパスワード。
  1. データベースへの接続と接続成功の確認:
   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クエリを実行し、その結果を読み取るためのものです。各部分の役割と動作について詳しく解説します。

コードの構成

  1. SqlCommandの使用:
   using (SqlCommand cmd = new SqlCommand("SELECT * FROM Employees", conn))
  • ここでは、SqlCommand オブジェクトをインスタンス化しています。このオブジェクトはSQLクエリを実行するために使用されます。
  • "SELECT * FROM Employees" は、Employees テーブルからすべての列のデータを取得するSQL SELECTクエリです。
  • conn は、既に開かれているSQL Serverデータベースへの接続を表します。この接続はSqlConnection オブジェクトを通じて行われます。
  1. SqlDataReaderの使用:
   using (SqlDataReader reader = cmd.ExecuteReader())
  • ExecuteReader() メソッドは、SQLコマンド(ここではSELECT文)の実行結果を取得するために使用されます。このメソッドは、クエリの結果を表すSqlDataReader オブジェクトを返します。
  • SqlDataReader は、データベースから読み取ったデータに順次アクセスするためのものです。このオブジェクトはフォワードオンリーと読み取り専用のストリームを提供します。
  1. データの読み取りと表示:
   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操作を行う方法を説明しました。これらの基本的なテクニックをマスターすることで、さらに複雑なデータベースアプリケーションの開発に進むことができます。続けて、トランザクション管理やエラーハンドリングなど、より高度なトピックに挑戦してみましょう。

タイトルとURLをコピーしました