[C#] SQL Server LocaldB へ接続してSQLを実行する

このページのタグ:[C#] [SQL Server] [SQL Server LocalDB]
SQL Server LocaldB へ接続してSQLを実行するコードを紹介します。

事前準備

SQL Server LocalDBのインストール

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

SQL Server LocalDBの作成

LocalDBのデータベースとテーブルを作成します。データベースとテーブルの作成手順はこちらの記事を参照してください。

接続文字列の確認

LocalDB に接続するための接続文字列を確認します。
[サーバー エクスプローラー]の[データ接続]ノードから接続したいLocalDBをクリックして選択します。右クリックしてポップアップメニューを表示します。メニューの[プロパティ]をクリックします。


プロパティウィンドウにLocalDBのプロパティが表示されます。


プロパティの[接続文字列]の項目にこのLocalDBへの接続文字列が表示されています。接続文字列の値をコピーします。

プログラム

今回は、Windows フォームアプリケーションでの接続をします。

UI

下図のUIを作成します。フォームにButtonを1つTextBoxを一つ配置します。

コード

下記コードを記述します。

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 SimpleLocalDB
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      string constr = @"(SQL Server LocalDBの接続文字列)";

      SqlConnection con = new SqlConnection(constr);
      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"];
          int price = (int)sdr["price"];
          textBox1.Text += string.Format("{0:s}:{1:d} \r\n", name, price);

        }
      }
      finally {
      }
    }
  }
}

解説

接続文字列以外はSQL Serverへ接続するコードと違いはありません。SQL Serverへの接続とSQL文の実行に関してはこちらの記事を参照してください。

実行結果

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


[button1]をクリックします。下図の実行結果となります。テーブルに入力したレコードが読み出されテキストボックスに表示されています。


以上でLocalDBへの接続とSQL文の実行ができました。

結果を受け取らないSQLの場合

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 SimpleLocalDB
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      /* 省略 */
    }

    private void button2_Click(object sender, EventArgs e)
    {
      string constr = @"(SQL Server LocalDBの接続文字列)";

      SqlConnection con = new SqlConnection(constr);
      con.Open();
      try {
        string sqlstr = "update products set price=60 where id=4";
        SqlCommand com = new SqlCommand(sqlstr, con);
        int lineCount = com.ExecuteNonQuery();

        textBox1.Text += string.Format("{0:d} 行を変更しました\r\n", lineCount);
      }
      finally {
        con.Close();
      }
    }
  }
}

実行結果

プロジェクトを実行します。ウィンドウ表示後[button1]をクリックします。レコードの一覧が表示されます。


[button2]をクリックします。UPDATEコマンドが実行され、変更を受けた行数がテキストボックスに表示されます。



単一の値を受け取るSQLの場合

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 SimpleLocalDB
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      /* 省略 */
    }

    private void button2_Click(object sender, EventArgs e)
    {
      /* 省略 */
    }

    private void button3_Click(object sender, EventArgs e)
    {
      string constr = @"(SQL Server LocalDBの接続文字列)";

      SqlConnection con = new SqlConnection(constr);
      con.Open();
      try {
        string sqlstr = "select count(*) from products where price>100";
        SqlCommand com = new SqlCommand(sqlstr, con);
        int RCount = (int)com.ExecuteScalar();
        textBox1.Text += string.Format("{0:d} レコード \r\n", RCount);

      }
      finally {
      }
    }
  }
}

実行結果

プロジェクトを実行し、ウィンドウの表示後[button3]をクリックします。条件に一致するレコードの数がテキストボックスに表示されます。

登録日 :2016-07-18    最終更新日 :2016-11-04
このページのタグ:[C#] [SQL Server] [SQL Server LocalDB]
Japanese
プライバシー    iPentecについて
iPentec all rights reserverd. (ISDC)