記事内に広告が含まれています

【C#】SQL Serverに接続してSELECT文を実行する

C#

C#でSQL Server (LocalDB)に接続する方法についてまとめました。

操作はVisual Studioだけで完結するので、別途SQL Serverをインストールする必要はありません。

LocalDBとは?

無償で使えるSQL Server Expressの開発者向けバージョンです。
Visual Studio Installerで特定のワークロードを選択すると簡単にインストールすることができます(インストール方法は後述)

環境

  • Visual Studio 2022
  • .NET 8

準備(Local DBの追加)

※既にVisual Studio 2022のワークロードに「ASP.NETとWeb開発」や「Azure の開発」が追加されている場合はこの手順は不要です。

まず初めにワークロードを追加します。スタートメニューからVisual Studio Installerを起動します。

変更をクリック。

ワークロードの選択画面が出るので、「ASP.NETとWeb開発」(または「Azure の開発」)にチェックを入れ、「変更」ボタンを押します。

これでLocalDBがインストールされます。

Visual Studioでデータベースとテーブルを作成

Visual Studio上でLocalDBにデータベースとテーブルを作成する方法を解説します。

プロジェクトの作成

Visual Studioを起動して新しいプロジェクトを作成します。

今回はコンソールアプリを選択します。

プロジェクト名は「SqlServerApp」にしました。
他の設定はデフォルトのままでOKです。

全てデフォルトのままで「作成」をクリックします。

デザイナー(GUI)によるデータベースとテーブルの作成

プロジェクトが作成されたら、「表示」→「SQL Server オブジェクトエクスプローラー」を開きます。

「SQL Server オブジェクトエクスプローラー」が表示されたら、
「(localdb)¥MSSQLLocalDB」直下の「データベース」フォルダを右クリックして、「新しいデータベースの追加」をクリックします。

※もし一覧に「(localdb)¥MSSQLLocalDB」が表示されない場合は、「SQL Serverの追加」アイコンから「MSSQLLocalDB」を選んで接続してみてください。

データベース名はなんでも大丈夫ですが、今回は「testdb」としてみます。

「testdb」が作成されたら、次はテーブルを作成します。
testdb内の「テーブル」フォルダを右クリックして「新しいテーブルの追加」をクリックします。

テーブルの定義を設定するデザイナー画面が表示されます。

今回は簡易的に、Id・Name・Age・Birthdayの4列からなる「Test」というテーブルを作成します。
テーブル名は画面下「T-SQL」タブの[dbo].[○○]から変更できます。

入力できたら左上の「更新」をクリックしましょう。

プレビュー画面が表示されるので、問題なければ「データベースの更新」をクリックします。

オブジェクトエクスプローラー左上の更新矢印ボタンをクリックすると、作成されたテーブルが反映されるはずです。

次はデータを登録します。「dbo.Test」テーブルを右クリックして「データの表示」をクリックしましょう。

3件ほどテストデータを追加します。これでテーブルの準備が整いました。

【参考】SQLによるテーブル作成とデータの追加方法

今回はデザイナーを使用してテーブルの作成やデータの追加を行いましたが、以下のSQLでまとめて実行することも可能です。

CREATE TABLE [dbo].[Test] (
  [Id] INT NOT NULL PRIMARY KEY,
  [Name] NVARCHAR(50) NULL,
  [Age] INT NULL,
  [Birthday] DATE NULL
)

INSERT INTO Test VALUES( 1, N'一郎', 25, '1996-08-31')
INSERT INTO Test VALUES( 2, N'次郎', 40, '1981-12-12')
INSERT INTO Test VALUES( 3, N'花子', 18, '2003-04-01')

SQLを実行するには、DB名を右クリックして「新しいクエリ」を選択し、

表示されたウィンドウにSQLを入力して左上の実行ボタンを押せばOKです。

接続文字列の確認

最後にDBに接続するための情報を取得します。
「testdb」を右クリックして「プロパティ」をクリックします。

右下の方にプロパティが表示されるので、「接続文字列」という列を探し、表示されている値を文字列をメモ帳等にコピペしておきましょう。
これで準備は完了です。

C#でLocalDBに接続してSELECT文を実行する

それではLocalDBに接続して、情報を取得してみましょう。

まずSQL Serverへの接続や操作に必要なパッケージをインストールします。
ソリューションエクスプローラーでプロジェクト名を右クリックし、「NuGetパッケージの管理」をクリックします。

左上の「参照」タブを開いて「sqlclient」と検索し、表示された「Microsoft.Data.SqlClient」をインストールしましょう。

インストールができたら、LocalDBに接続する準備は完了です。

Program.csに以下のコードを書いて実行すると、テーブル内容がすべて取得できます。
※.NET 6 以降の最上位レベルのステートメントを使っています。下記コードをProgram.csに貼り付けるだけで実行可能です。

using Microsoft.Data.SqlClient;

// 先ほどコピーした接続文字列を貼り付ける
var connectionString = @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=testdb;Integrated Security=True;Connect Timeout=30;Encrypt=False;Trust Server Certificate=False;Application Intent=ReadWrite;Multi Subnet Failover=False";

// 実行するSQL
var sql = "SELECT * FROM Test";

// 接続のためのオブジェクトを生成
// 実行後にオブジェクトのCloseが必要なためusing文で囲う
using (var connection = new SqlConnection(connectionString))
{
    // 接続を確立
    connection.Open();

    // SqlCommand:DBにSQL文を送信するためのオブジェクトを生成
    // SqlDataReader:読み取ったデータを格納するためのオブジェクトを生成
    using (var command = new SqlCommand(sql, connection))
    using (var reader = command.ExecuteReader())
    {
        // 1行ごとに読み取る
        while (reader.Read())
        {
            // 列名を指定して、読み取ったデータをコンソール上に表示
            Console.WriteLine($"Name:{reader["Name"]}   Age:{reader["Age"]}   Birthday:{reader["Birthday"]}");
        }
    }
}

Ctrl + F5でデバッグなしで実行し、コンソール上にSELECT文の結果が表示されれば成功です。

SELECT文の内容を変更して、結果が変わることを試してみてください。

おわりに

以上、SQL ServerのLocalDBに接続してSELECT文を実行する方法を解説しました。

INSERT・UPDATE・DELETE文を実行する方法については以下で解説しています。

O/Rマッパーの「Entity Framework Core」を使ってSQL Serverを操作する方法が知りたい場合は、以下の記事を参照してください。

今回使用したSqlConnectionやSqlCommand等の使い方や仕組みについてさらに詳しく知りたい方は、以下の書籍が参考になります。

著:金城俊哉
¥3,168 (2022/02/07 18:20時点 | Amazon調べ)
C#
hiranote

コメント

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