2019-06-21に更新

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

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

プログラムは前回のものを使います。
【WPF】フォルダ選択ダイアログを表示して複数のCSVファイルを読み込む

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

NuGetパッケージ管理を選択

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

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

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

プレビュー画面

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

ライセンス同意画面

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

出力ビュー

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

データベースの作成

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

MariaDB 10.2.6 のインストールからテーブル作成まで

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

ではでは。

 

 

Originally published at www.doraxdora.com

doraxdora

IT関係の仕事をしています/1985年生まれの東京在住/便利なサービスやツール漁りや料理などが好き/2017年~ブログやってます/自分でサービスとか作ってリリースしたい/何かありましたらお気軽にDMどうぞ

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント