*

外部から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を使用する方が圧倒的に楽!でした…。

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

ではっ!

関連記事

eclipse_oxygen

苦肉の策でLinux/EclipseでRaspberryPiのクロス環境を構築してみた

どもです。 前回のエントリでは、仮想環境(VirtaulBox)を用いたRaspberryPi3の

記事を読む

iot_raspberrypi_gateway_001_eye_catch

IoT開発(13)
RaspberryPiをIoTゲートウェイにする(VI)
flaskでGET/POSTの受信処理

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

記事を読む

RasPi_Qt

Rasbianの新しいバージョンが出たので、クロス環境を更新してみた。

どもです。 RaspberryPiのOS:Raspbianの新しいバージョンが、少し前(…なの

記事を読む

iot_raspberrypi_gateway_001_eye_catch

IoT開発(6)
RaspberryPiをIoTゲートウェイにする(I)
VM上に開発環境を構築

どもです。前回までの記事で、ESP-WROOM-02/ESP32を電池で駆動して、センサーのデータを

記事を読む

toppers

C言語でEV3開発(26)-EV3で機械学習(1)-QLearningをC#に委譲してみた

どもです。 前回の投稿では、Q-LearningをEV3本体に実装してみたら、メモリが足りなくて動

記事を読む

raspberry-pi

libpigpioでのRaspberryPi3とArduinoのSPI通信

どもです。 今回は、libpigpioを使用してRaspberryPi3とArduinoでSPI通

記事を読む

eclipse_oxygen

Linux/EclipseでRaspberryPiのクロス環境を構築してみた…がっ!

どもです。 前回のエントリでは、WindowsにRaspberryPi3のクロスコンパイル環境の構

記事を読む

raspberry-pi

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

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

記事を読む

no image

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

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

記事を読む

raspberry-pi

QtでRaspberryPi/GUI開発(9)-SPI通信をしてみた

どもです。 えー。 「Qtで…」とか書いておきながら、今回はQtは出てきません。 今回のエ

記事を読む

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="">

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

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

tlp222af_001_eye_catch
Arduinoでリレースイッチ(1)-TLP222AF

どもです。 つい先日、やっとのことでリレースイッチを手に入れるこ

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

どもです。 前回のエントリで、外部からMariaDbにアクセスす

c_sharp_eye_catch
外部からMariaDbにアクセスする(1)-データベースの設定

どもです。 今回は、Linux上のMariaDbにWindows

think_about_utest
middle_unit
最小…よりも(ほんの)少し大きいテストフレームワーク

どもです。 今回は、単体テストのフレームワークについて書きます。

→もっと見る

PAGE TOP ↑