SQL Server 2017 Express LocalDB を利用する - C#

C#でSQL Server 2017 Express LocalDB を利用したプログラムのコードを紹介します。

概要

SQL Server 2017 Express LocalDB を利用した場合も基本的には、SQL Server を利用する場合と同様のコードで接続できます。

事前準備

SQL Server LocalDBのインストール

Microsoft SQL Server 2017 Express LocalDB をインストールします。インストール手順はこちらの記事を参照してください。

データベースとテーブルの作成

LocalDBのデータベースとテーブルを作成します。
今回は"DemoDB"という名称のデータベースを作成し、"products" という名前のテーブルを作成します。
テーブルの作成手順はこちらの記事を参照してください。

テーブルレコードの作成

テーブルのレコードを編集します。今回は下記の内容とします。テーブルのレコード編集手順についてはこちらの記事を参照してください。
idnameprice
1ぺんぎんクッキー580
2あひるケーキ450
3らくだカステラ280
4くじらキャンディ180

プログラム

接続文字列の確認

SQL Server LocalDBへの接続文字列を確認します。[SQL Server オブジェクト エクスプローラー]を表示します。オブジェクト エクスプローラーウィンドウ内のツリービューの[SQL Server]ノードの下に作成したLocalDBのデータベースのノードが表示されています。接続するデータベースのノードをクリックして選択します。選択状態で[プロパティ]ウィンドウの[接続文字列]プロパティの値をコピーします。


今回の接続文字列は下記でした。
LocalDBの接続文字列
Data Source=(localdb)\ProjectsV13;Initial Catalog=DemoDB;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False

UI

下図のUIを作成します。

コード

下記のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace SimpleLocalDB2018
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      string ConnectionStr = @"Data Source=(localdb)\ProjectsV13;Initial Catalog=DemoDB;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";

      SqlConnection con = new SqlConnection(ConnectionStr);
      con.Open();
      try {
        string sqlstr = "select * from products";
        SqlCommand com = new SqlCommand(sqlstr, con);
        SqlDataReader sdr = com.ExecuteReader();

        while (sdr.Read() == true) {
          string name = ((string)sdr["name"]).Trim();
          int price = (int)sdr["price"];
          textBox1.Text += string.Format("{0:s}:{1:d} \r\n", name, price);
        }
      }
      finally {
        con.Close();
      }
    }
  }
}

解説

取得した接続文字列を利用して、SQL Server Express LocalDBに接続します。
  string ConnectionStr = @"Data Source=(localdb)\ProjectsV13;Initial Catalog=DemoDB;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";

  SqlConnection con = new SqlConnection(ConnectionStr);
  con.Open();

接続後、SQL文を実行します。SQLの実行はSQL Serverに接続した場合と同様で、SqlCommand オブジェクトを作成し、クエリの場合はExecuteReaderメソッドを呼び出してSQLを実行します。
クエリの結果はSqlDataRaederで取得します。while ループでSqlDataReader のフィールドに格納されている値を取得します。
try {
  //実行するSQL文を準備します。
  string sqlstr = "select * from products";

  //クエリを実行するためのSqlCommand オブジェクトを作成します。
  //クエリのSQL文の文字列とSqlConnectionをコンストラクタに与えます。
  SqlCommand com = new SqlCommand(sqlstr, con);

  //ExecuteReader メソッドを呼び出し、SQLクエリを実行します。クリエの結果はSqlDataReaderオブジェクトのsdrに代入されます
  SqlDataReader sdr = com.ExecuteReader();

  //SqlDataReaderオブジェクトの結果レコードを取り出します。複数の結果レコードが含まれているためwhileループを利用し、Readメソッドの戻り値がfalseになるまで繰り返します。
  while (sdr.Read() == true) {
    //"name"フィールドの値を取り出します。
    string name = ((string)sdr["name"]).Trim();

    //"price"フィールドの値を取り出します。
    int price = (int)sdr["price"];

    //取得した値をテキストボックスに表示します
    textBox1.Text += string.Format("{0:s}:{1:d} \r\n", name, price);
  }
}

処理完了後、LocalDBとの接続を切断します。
finally {
  con.Close();
}

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


[button1]をクリックします。テキストボックスに下図の結果が表示されます。作成したテーブルのレコードの内容が表示されていることが確認できます。


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-01-07
作成日: 2018-04-17
iPentec all rights reserverd.