【C#・初心者向け】SQL ServerのLocalDBに接続してSELECT文を実行する方法

C# / .NET

今回は初心者の方向けに、C#でSQL Server Express LocalDBに接続する方法についてまとめました。

操作はVisual Studio 2019だけで完結するので、SQL Serverのインストールは不要です。

※LocalDBとは?
Visual Studioと一緒にインストールされる必要最低限の機能を備えたSQL Serverです。
学習用に色々触ってみたい場合に適しています。

スポンサーリンク

環境

  • Windows10
  • Visual Studio Community 2019
  • .NET Framework 4.8

準備(LocalDBの追加)

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

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

変更をクリック。

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

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

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

プロジェクトの作成

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

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

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

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

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

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

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

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

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

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

今回は簡易的に、Id・Name・Age・Birthdayの4列からなる「Test」というテーブルを作成します。
テーブル名は画面下の[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に接続して、情報を取得してみましょう。
Program.csに以下のプログラムを書いて実行すると、テーブル内容がすべて取得できます。

using System;
using System.Data.SqlClient;  // usingの追加

namespace DBConnectApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // 先ほどコピーした接続文字列を貼り付ける
            var connectionString = @"接続文字列";

       // 実行するSELECT文
            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行ごとに読み取る。読み取ったらtrue
                    while (reader.Read())
                    {
                        // 列名を指定して、読み取ったデータをコンソール上に表示
                        Console.WriteLine($"" +
                            $"{reader["Name"]}\t\t" +
                            $"{reader["Age"]}\t\t" +
                            $"{reader["Birthday"]}");
                    }
                }
            }
        }
    }
}

デバッグなしで実行すると、無事コンソール上にテーブル内容が表示されました。

参考

今回使用したSqlConnectionやSqlCommandのクラスについても詳しく説明されているので、より深く学びたい人におすすめです。

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

コメント

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