C# でデータベースのクエリを選択する

Muhammad Husnain 2023年10月12日
  1. データベースとは
  2. C# でのデータベース接続
C# でデータベースのクエリを選択する

この記事では、C# アプリケーションとのデータベース接続を設定し、データベースから SELECT クエリを使用してさまざまなテーブルからデータをフェッチする方法について説明します。

データベースとは

データベースは、単なる表形式で編成されたデータのコレクションではなく、はるかに多くのものです。これは、適切な命名規則と他のテーブルとの関係を備えた組織化された構造でデータを表します。

データベース管理システムは、データベースと対話するための言語(SQL など)も提供します。これは、英語に非常に近いため、ユーザーが非常に簡単に理解できます。また、データ操作のパフォーマンスを向上させるためのデータセキュリティおよび最適化スキームも提供します。

C# でのデータベース接続

通常、プログラマーはデータベースを使用してアプリケーションのデータを保存します。C# 言語は、Oracle データベースと Microsoft SQL サーバーデータベースを使用したデータベースプログラミングを提供します。

C# は他の多くのデータベースでも機能しますが、上記の 2つが最も一般的で、広く使用されています。データベースが何であれ、すべてのデータベースの背後にあるロジックはまったく同じです。

この記事では、SQL Server データベースを使用して操作を実行します。データベース操作に必要な名前空間System.data.SqlClient です。

これには、データベース接続および操作中に必要となるすべてのクラスが含まれています。

SQL Server でデータベースを作成する

最初のステップは、SQL Server 内で対話する必要があるデータベースを作成することです。このデータベースは、次のクエリを使用して作成されます。

create database mydb;

use mydb;

CREATE TABLE Student(
    studentID varchar(20) NOT NULL PRIMARY KEY,
    stuentName varchar(60) NOT NULL
);

insert into Student values("BS01", 'David');
insert into Student values("BS02", 'John');

これらのクエリを実行すると、テーブル Student を持つデータベースが作成され、2 行が含まれます。

C# でデータベースと接続する

データベースと対話するには、いくつかのパラメーターが必要です。これらのパラメータを組み合わせて、接続文字列を形成します。

  1. データベースの名前-データを読み取る必要があるデータベースの名前を指定する必要があります。一度に 1つのデータベースのみを使用することをお勧めします。
  2. データベースの資格情報-データベースと対話するためのユーザー名とパスワードは常に存在するため、許可されたユーザー名とパスワードを指定する必要があります。
  3. いくつかのオプションのパラメータ-いくつかのオプションのパラメータを提供することもできます。たとえば、データベースが一定期間非アクティブのままである場合に接続を閉じる必要があるタイムアウト値を設定できます。

データベースとの接続を実行するサンプルコードを見てみましょう。データベースのユーザー名が usr で、パスワードが usr123 であるとします。

SqlConnection conn;
string connectString =
    @"Data Source=DESKTOP-FQ8R559;Initial Catalog=mydb;User ID=usr;Password=usr123";

conn = new SqlConnection(connectString);
conn.Open();
Console.WriteLine("Connection Established");

データベースからデータを読み取る

データベースからデータを読み取るには、SqlCommand クラスと SqlDataReader が必要です。SqlCommand クラスは、データベースでコマンドを実行するために使用されます。

Select コマンドを実行すると、Resultset が生成されます。この Resultset は、SqlDataReader クラスを使用して読み取ることができます。

以下のコードを見てみましょう。

SqlCommand cmd;
SqlDataReader dataReader;
string sql = "Select * from Student";
cmd = new SqlCommand(sql, conn);
dataReader = cmd.ExecuteReader();
Console.WriteLine("Data from the Database..");
while (dataReader.Read()) {
  Console.WriteLine(dataReader.GetValue(0) + " || " + dataReader.GetValue(1));
}
dataReader.close();
conn.close();

このコードスニペットでは、最初に、SqlCommand オブジェクトを作成し、データベースで実行する必要のあるクエリを作成しました。次に、このクエリは cmd オブジェクトと接続オブジェクト conn に送信されます。

クエリを実行するには、関数 ExecuteReader() を使用します。この関数は、クエリで取得したデータを含む Resultset を返します。この ResultSet は、ループ内のデータを行ごとに読み取る SqlDataReader オブジェクトを使用して読み取ることができます。

最後に、リーダーと接続オブジェクトを閉じて、後で使用できるように解放する必要があります。

上記のコードの出力は次のようになります。

Connection Established.
Data from the Database..
BS01 || David
BS02 || John

Select クエリを実行するために ExecuteReader() 関数を使用したことに注意してください。より多くの種類のクエリを実行するには、さまざまなメソッドが必要です。

人気のあるクエリ結果リーダーのいくつかは次のとおりです。

関数名 説明
ExecuteReader() 表形式でデータを返すことができるクエリを実行するために使用される関数。
ExecuteNonQuery() InsertUpdate などのデータベースで DML クエリを実行するための関数。
ExeuteScalar() count などの単一の値を返すクエリの関数
Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn

関連記事 - Csharp SQL