BETA

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

投稿日:2019-06-21
最終更新:2019-06-21
※この記事は外部サイト(https://www.doraxdora.com/blog/2017/07/24/...)からのクロス投稿です

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

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

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

ではでは。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@doraxdoraの技術ブログ 主に Java, C#, Python, Javascript の記事を載せていく予定。

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!