C#でSQL Server 2017 Express LocalDB を利用したプログラムのコードを紹介します。
SQL Server 2017 Express LocalDB を利用した場合も基本的には、SQL Server を利用する場合と同様のコードで接続できます。
Microsoft SQL Server 2017 Express LocalDB をインストールします。インストール手順はこちらの記事を参照してください。
LocalDBのデータベースとテーブルを作成します。
今回は"DemoDB"という名称のデータベースを作成し、"products" という名前のテーブルを作成します。
テーブルの作成手順はこちらの記事を参照してください。
テーブルのレコードを編集します。今回は下記の内容とします。テーブルのレコード編集手順についてはこちらの記事を参照してください。
id | name | price |
---|---|---|
1 | ぺんぎんクッキー | 580 |
2 | あひるケーキ | 450 |
3 | らくだカステラ | 280 |
4 | くじらキャンディ | 180 |
SQL Server LocalDBへの接続文字列を確認します。[SQL Server オブジェクト エクスプローラー]を表示します。オブジェクト エクスプローラーウィンドウ内のツリービューの[SQL Server]ノードの下に作成したLocalDBのデータベースのノードが表示されています。接続するデータベースのノードをクリックして選択します。選択状態で[プロパティ]ウィンドウの[接続文字列]プロパティの値をコピーします。
今回の接続文字列は下記でした。
下図の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]をクリックします。テキストボックスに下図の結果が表示されます。作成したテーブルのレコードの内容が表示されていることが確認できます。