*

外部からMariaDbにアクセスする(2)-C#からMariaDbにアクセスする。

公開日: : C#, RaspberryPi

どもです。

前回のエントリで、外部からMariaDbにアクセスするための、データベース側の設定を行いました。
そこで今回は、実際にMariaDbに外部からアクセスしてみます。

1.環境

初めに開発環境です。
開発環境は、以下の通りです。
特に変更はありません。

開発環境(H/W)

H/W 構成品
CPU Intel(R) Core i7-8700 CPU 3.20GHz

開発環境(S/W)
S/W 構成品
OS Windows10 Pro
OS Windows10 Pro (Ver.1903)
IDE VisualStudioCommunity2019 Ver.16.7.3
VM VirtualBox 5.2.20
ゲストOS Raspbian(Debian Buster)
データベース MySql Ver 15.1 Distri 10.3.22-MariaDB

また今回は、C#でMariaDbにアクセスしてみます。

2.MySQL Connectorのインストール

C#からMariaDbにアクセスするためには、「MySQL Connector」というライブラリが必要です。
そこでまず、このライブラリのインストールを行います。
ライブラリのインストール方法は2つあります。
今回は、その両方とも書きます。

2.1.ダウンロードページから取得する

以下のページにアクセスします。
まず、ダウンロードページにアクセスします。
次に、画面の下の方の「Other DownLoads」をクリックします。
cs_raspbian_external_access_002_001
ログイン画面が表示されます。
今回は、単にダウンロードするだけなので、画面下の「No thanks, just start download」をクリックします。
cs_raspbian_external_access_002_002
インストーラのダウンロードが始まります。
ダウンロードが完了したら、次にインストールです。
ダウンロードしたインストーラをダブルクリックして、インストールを開始します。
インストールウィザード画面が表示されたら、[Next]ボタンを押下します。
cs_raspbian_external_access_002_003
インストール内容の選択を求められます。
ココでは、[Typical]を選択します。
cs_raspbian_external_access_002_004
インストールの確認画面が表示されるので、[Install]ボタンを押下します。
これで、インストールが開始されます。
cs_raspbian_external_access_002_005
インストール完了画面が表示されたら、[Finish]ボタンを押下します。
これで、インストール完了です。
cs_raspbian_external_access_002_007

2.2.VisualStudioのNuGetを使う

もう1つの方法は、VisualStudioのNuGetパッケージマネージャを使用する方法です。
VisualStudioのメニュー[ツール]-[NuGet パッケージマネージャ]から「NuGetソリューション」画面を表示します。
次に、「参照」タブの検索画面で、「MySQL」と入力します。
一番上に、「MySQL.Data」が表示されるので、それをインストールします。
インストールの際には、インストール先プロジェクトを選択してください。
cs_raspbian_external_access_002_008
以上で完了です。

3.実装

C#からMariaDbに接続する準備ができたので、次は実装です。
なお言語は「C#」で、VisualStudioのプロジェクトのタイプは、「.NET Framework」の「コンソールアプリケーション」で開発を進めます。

3.1.接続情報の設定

MariaDbの接続先(IPアドレスやアクセスするデータベース)や、ユーザ情報は、「MySqlConnectionStringBuilder」で生成します。
「MySqlConnectionStringBuilder」では、以下のように設定します。

実行する場合は、各設項目に設定している値を正しい値に変更してください。

3.2.データベースへの接続

先に生成した「MySqlConnectionStringBuilder」のインスタンスを使ってデータベースにアクセス、接続するためには、「MySqlConnection」クラスを使用します。
実際のコードは、以下です。

先に生成した「MySqlConnectionStringBuilder」インスタンスでは、「ConnectionString」プロパティから接続に必要な文字列を取得することができます。
これを「MySqlConnection」クラスのコンストラクタに渡すことで、接続情報を「MySqlConnection」オブジェクトに渡します。
生成した「MySqlConnection」の「Open」メソッドを実行することで、データベースへの接続は完了です。
なお、「MySqlConnection」クラスは「IDispose」クラスを継承しています。
「MySqlConnection」の「Close」メソッドは、「Dispose」メソッドを呼ぶことで、自動で実行されます。
そのため、using句を使用することで、データベース接続の閉じ忘れが回避できます。

3.3.SQLの実行

SQLの実行は、「MySQLCommand」クラスを使用します。
「MySQLCommand」クラスは、「MySQLCommand」クラスから取得可能します。
実行したいSQL文は、「MySQLCommand」の「CommandText」プロパティに設定します。
SQLの設定ができたら、実際にSQLを実行します。
今回は、データベースからレコードを読み出す場合を例に記載します。
データを読み出す際には、「ExecuteReader」メソッドを使用します。
実際のコードは、下記です。

SELECT文で取得した各レコードは、「MySqlReader」オブジェクト(上記コードでは「reader」)に格納されて返されます。
各レコードの値の取得は、「MySqlReader」の「Read()」メソッドを実行後、「GetXxx」(Xxxはデータ型名)で取得が可能です。
なお、「GetXxx」を実行する際には、レコードの何番目の列の値を取得したいかを指定します。

3.4.コード全体

ここまで紹介してきた内容をまとめたコードです。

4.実行結果

上記コードを(IPドレスやユーザIDは、適切な値に変更して)実行すると、下図のような結果になります。
cs_raspbian_external_access_002_009

5.まとめ

今回は、C#からMariaDbにアクセスしてデータを取得するアプリケーションの開発に必要な環境の構築について書きました。
また、構築した環境において、実際にデータベースの値を取得する簡単な例を紹介しています。
環境構築では方法を2つ示しましたが、NuGetを使用する方が圧倒的に楽!でした…。

また今回紹介した方法を発展させることで、アプリケーションの実行のみでデータベースの値が確認できるようになります。

ではっ!

関連記事

raspberry-pi

RaspberryPi3対応のタッチスクリーンを買いました

どもです。 ついに、念願のRaspberryPi3対応のタッチスクリーンを買いました。 今回のエ

記事を読む

c_sharp_eye_catch

セル内の「取り消し線で消された文字列」の削除を簡単にしてみた

どもです。 前回、C#/OpenXmlを用いて、エクセルのセル内の文字列から「打消し線で消され

記事を読む

MindStormControl_SprachScreen

EV3開発サポートツール(2)-C#のユーザーコントロール開発(2つ目)

どもです。 前回に引き続き、今回もC#/WPFでの独自UI(ユーザーコントロール)の作成についての

記事を読む

raspberry-pi

RaspberryPi3を購入しました

どもです。 突然ですが、「Raspberry Pi3 model B」を購入しました。 今回のエ

記事を読む

no image

RaspberryPiのOS:RaspbianをNOOBSでセットアップしてみた

どもです。 今回の内容は、「今更!?」ですがNOOBSでRaspbianをセットアップしたとい

記事を読む

raspberry-pi

ライブラリでRasPiのピンにアクセス(1)-ライブラリを作ります

どもです。 これまでこのブログでは、RaspberryPiのGPIOとかSPIを使用したアプリ

記事を読む

Splash

EV3開発サポートツール(3)-Ev3Controller

どもです。 今回は、以前ちらりと紹介した、Ev3のモーターの出力を調整するアプリケーションについて

記事を読む

raspberry-pi

QtでRaspberryPi/GUI開発(7):pigpioを使用したチャタリング対策の問題

どもです。 前回のエントリーで、pigpioを使用したチャタリング対策について記載しました。 今

記事を読む

iot_raspberrypi_gateway_001_eye_catch

IoT開発(12)
RaspberryPiをIoTゲートウェイにする(V)
nginxとuWSGIの連携

どもです。このエントリは、以下のエントリの続きです。 IoT開発(6) RaspberryPiをI

記事を読む

c_sharp_eye_catch

C#でバッファの内容を表示する処理を実装してみた-
データ型に従って動的に書式を設定する

どもです。 最近、C#でバッファ/配列の値をコンソールに表示したい、という場面がよく発生します

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

c_sharp_eye_catch
セル内の「取り消し線で消された文字列」の削除を簡単にしてみた

どもです。 前回、C#/OpenXmlを用いて、エクセルのセル内

c_sharp_eye_catch
セル内の「取り消し線で消された文字列」を削除してみた

どもです。 今回は、C#/OpenXmlの組み合わせで、エクセル

c_sharp_eye_catch
C#でバッファの内容を表示する処理を実装してみた-
データ型に従って動的に書式を設定する

どもです。 最近、C#でバッファ/配列の値をコンソールに表示した

arduino_relay_switch_003_self_preservation_circuit_eye_catch
Arduinoでリレースイッチ(3)-自己保存回路

どもです。 前回の記事で、リレースイッチ「AE-G5V-DRV」

arduino_relay_switch_002_ae_g5v_drv_eye_catch
Arduinoでリレースイッチ(2)-AE-G5V-DRV

どもです。 前回の記事では、「フォトカプラリレー」を使用したLチ

→もっと見る

PAGE TOP ↑