【WPF】MySQL(MariaDB)に接続してデータを DataGrid に表示してみる

2017年7月24日C#,開発

おはようございます。

一昨日くらいに、今年初めてセミの鳴く声を聴きました。
なんだか、いつもより遅いかなっとも思ったのですが、東京は大体このくらい(7月下旬)らしいですね。

暑さでは既に夏を感じていますが、
セミの鳴き声を聴くと一気に夏っぽくなりますね。

毎年、気付くと家のベランダにお亡くなりになったセミがいたりするんですが、今年は無いといいなぁ。。

本題ですが、少し久しぶりの WPF ネタとなります。

これまで、WPFでSQLiteを使って色々やってきましたが、
他のDBではどうだろうかと、試しに MySQL (MariaDB)を使ってみました。

プログラムは前回のものを使います。

スポンサーリンク

Nuget でパッケージをダウンロード

NuGetパッケージ管理を選択

ソリューションエクスプローラーからプロジェクトを選択、右クリックし
「Nuget パッケージの管理」を選択します。

パッケージのインストール

Nuget パッケージ管理画面が表示されるので、
検索窓に「mysql」を入力し、「MySql.Data」を選択、インストールボタンをクリックします。

プレビュー画面

プレビュー画面が表示された場合は、「OK」ボタンをクリックします。

ライセンス同意画面

ライセンス同意画面が表示されるので、「同意する」ボタンをクリックします。

出力ビュー

出力ビューに「終了」が表示されれば完了です。

データベースの作成

MySQLが自分の環境にない場合は、
以前記事を書いたので参考にしてインストールしてください。

MySql(MariaDB)にデータベースを作成し
SQLite の時と同じテーブル、データを用意します。

テーブル作成、データ登録クエリ

CREATE TABLE IF NOT EXISTS MSTKIND (
        KIND_CD CHAR(2) NOT NULL
        , KIND_NAME VARCHAR(20)
        , PRIMARY KEY (KIND_CD)
);

CREATE TABLE IF NOT EXISTS TBLCAT (
        NO INTEGER(2) NOT NULL
        , NAME VARCHAR(20) NOT NULL
        , SEX CHAR(3) NOT NULL
        , AGE INTEGER(1) DEFAULT 0 NOT NULL
        , KIND_CD CHAR(2) DEFAULT '00' NOT NULL
        , FAVORITE VARCHAR(40)
        , PRIMARY KEY (NO)
);

INSERT INTO MSTKIND VALUES ("01", "キジトラ");
INSERT INTO MSTKIND VALUES ("02", "長毛種(不明)");
INSERT INTO MSTKIND VALUES ("03", "ミケ(っぽい)");
INSERT INTO MSTKIND VALUES ("04", "サビ");
INSERT INTO MSTKIND VALUES ("09", "その他");
INSERT INTO TBLCAT VALUES('1','そら','♂','6','01','犬の人形');
INSERT INTO TBLCAT VALUES('2','りく','♂','5','02','人間');
INSERT INTO TBLCAT VALUES('3','うみ','♀','4','03','高級ウェットフード');
INSERT INTO TBLCAT VALUES('4','こうめ','♀','2','04','横取りフード');

 

プログラム修正

宣言の追加

ダウンロードしたパッケージを利用するための宣言を追加します。

MainWindow.xaml.cs

using MySql.Data.MySqlClient;

 

接続処理の変更

SQLiteに接続していた部分を MySQLに接続するように修正します。

MainWindow.xaml.cs

    //using (var conn = new SQLiteConnection("Data Source=SampleDb.sqlite"))
    using (var conn = new MySqlConnection("Database=DB01;Data Source=localhost;User Id=USER01;Password=USER01; sqlservermode=True;"))

 

検索、更新、削除など、全ての箇所を修正します。

テーブル作成クエリの変更

SQLite とは微妙に違うところ(型、長さ)を変更。

MainWindow.xaml.cs

                    // 種別マスタ
                    StringBuilder sb = new StringBuilder();
                    sb.Append("CREATE TABLE IF NOT EXISTS MSTKIND (");
                    sb.Append("  KIND_CD CHAR(2) NOT NULL");
                    sb.Append("  , KIND_NAME VARCHAR(20)");
                    sb.Append("  , PRIMARY KEY (KIND_CD)");
                    sb.Append(")");
                    command.CommandText = sb.ToString();
                    command.ExecuteNonQuery();

                    // 猫テーブル
                    sb.Clear();
                    sb.Append("CREATE TABLE IF NOT EXISTS TBLCAT (");
                    sb.Append("  NO INTEGER(2) NOT NULL");
                    sb.Append("  , NAME VARCHAR(20) NOT NULL");
                    sb.Append("  , SEX CHAR(3) NOT NULL");
                    sb.Append("  , AGE INTEGER(1) DEFAULT 0 NOT NULL");
                    sb.Append("  , KIND_CD CHAR(2) DEFAULT '00' NOT NULL");
                    sb.Append("  , FAVORITE VARCHAR(40)");
                    sb.Append("  , PRIMARY KEY (NO)");
                    sb.Append(")");

 

起動してみる

検索結果

アプリケーションを起動し、検索ボタンをクリックするとしっかりデータが表示されました。

意外に簡単に利用することができますね。

まとめ

MySQLはとりあえずここまでにします。

そのうち Oracle、PostgreSQLでも試してみたいと思います。

ソースはこちら

GitHub

ではでは。

 

 

スポンサーリンク


関連するコンテンツ

2017年7月24日C#,開発C#,MariaDB,MySQL,WPF,プログラミング

Posted by doradora