2012/11/15

Windows フォームから SQL Server LocalDB を更新する


.NET の Windows フォームから SQL Server 2012 Express の LocalDB を更新するサンプルを作成してみます。

使用する環境は、Visual Studio 2012 for Windows Desktop で、Windows フォームは .NET Framework 4.5 をターゲットにします。

LocalDB データベースの作成

以下のエントリを参考に、LocalDB データベースを作成します。

インスタンス名 LocalDB Instance
データベース名 LocalDB
データベースパス C:\temp

上記データベースに、以下の定義で Users テーブルを作成します。

列名 データ型
ID int
Name nvarchar(50)

 

Windows フォームプロジェクトの作成

Visual Studio を起動して、LocalDBSample という名前の Windows フォームプロジェクトを作成します。

pic01

 

Visual Studio にデータベース取り込み

データソースビューを開き、「新しいデータソースの追加」をクリックします。

pic02

 

データベースを選択して「次へ」。

pic03

 

データセットを選択して「次へ」。

pic04

 

「新しい接続」をクリック。

pic05

 

接続の追加画面で以下の設定を行いOK。

データソース Microsoft SQL Server データベース ファイル
データベース ファイル名 C:\Temp\LocalDB.mdf

 

pic06

 

データ接続に LocalDB.mdf が表示されていることを確認して「次へ」。

pic07

 

以下のメッセージが表示されますが、今回はデータベースを直接使用したいので「いいえ」をクリック。

pic08

 

そのまま「次へ」。

pic09

 

テーブルにチェックを入れて「完了」をクリックして終了。

pic10

 

Windows フォームの作成

DataGridView のデータソースを Users テーブルにして、以下のようなフォームを作成します。

pic11

 

追加ボタン(buttonAdd)に以下のコードを追加します。

using System.Data.SqlClient;

private void buttonAdd_Click(object sender, EventArgs e)
{
    string connectionString = @"Server=(LocalDB)\v11.0; Integrated Security=true ;AttachDbFileName=C:\Temp\LocalDB.mdf";

    SqlConnection con = new SqlConnection(connectionString);

    string sql = "INSERT INTO Users (ID, Name) VALUES(@ID, @Name);";
       
    SqlCommand command = new SqlCommand(sql, con);
       
    SqlParameter pID = new SqlParameter("@ID", int.Parse(this.textBoxID.Text));
    command.Parameters.Add(pID);

    SqlParameter pName = new SqlParameter("@Name", this.textBoxName.Text);
    command.Parameters.Add(pName);
       
    con.Open();
    command.ExecuteNonQuery();
    con.Close();

    //更新をDataGridViewに反映
    this.usersTableAdapter.Fill(this.localDBDataSet.Users);

 

アプリケーションの実行

アプリケーションを実行して、ID=1, Name=田中 を指定して「追加」ボタンをクリックすると、正しく DataGridView にデータが反映されます。

pic12

 

気になる点

SQL文でデータ更新すると正しく反映されますが、DataGridView でデータを更新してもデータベースに更新が反映されませんでした。

SQL Server Management Studio では問題なくデータ更新ができるので、もしかしたら LocalDB と DataGridView の更新で不具合があるのかもしれません。

DataGridView の設定を何か見落としているかもしれませんが・・・。


スポンサーリンク


このエントリーをはてなブックマークに追加




Twitter ではブログにはない、いろんな情報を発信しています。


コメント

コメントを書く



プロフィール

  • 名前:fnya
    経歴:
    SE としての経験は15年以上。様々な言語と環境で業務系システム開発を行い、セキュリティ対策などもしていました。現在は趣味SE。

    Twitter では、ブログでは取り上げない情報も公開しています。


    ブログについて

    このブログは、IT、スマートフォン、タブレット、システム開発などに関するさまざまな話題を取り上げたり、雑感などをつづっています。


    >>ブログ詳細
    >>自作ツール
    >>運営サイト
    >>Windows 10 まとめ

    Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから