C#からMySQLに接続する

MySQLコネクタダウンロードトップの画像C#
スポンサーリンク

C#(VisualStudio)からMySQLに接続する方法を説明しています。

MySQLはワードプレスなどでもおなじみのフリーの代表的なリレーショナルデータベースです。
最近XAMPPをインストールするとMariaDBというデータベースがインストールされますが、基本的にはMariaDBは、MySQLと同じです。

今回は、MySQLの環境としてXAMPPを使っています。MySQLあるいはXAMPPがインストールされていない方はこちらからXAMPPをインストールしてください。

まず接続イメージです。
大枠としてC#もMySQLもそれぞれが一つのアプリケーションであり、独立した存在です。
この2つを繋げる橋渡し役が必要になります。

イメージ図
MySQLコネクタイメージ図の画像

MySQLの場合は、MySQLコネクタというアプリケーションがその橋渡し役を担います。
MySQLコネクタは、MySQLのサイトからOS毎のバージョンがダウンロードできます。
今回はMySQLコネクタを使ってC#からMySQLに接続するまでを順を追って説明します。

スポンサーリンク

MySQLコネクタのインストール(Windows/C#編)

Visual StudioとMySQLをつなげるためのソフトMySQLコネクタをインストールします。
MySQLコネクタは、MySQLの公式サイトにあります。

こちらにアクセスしてください。

ADO.NET Driver for MySQL (Connector/NET)がC#でMySQLにアクセスするときに必要なソフトです。
ダウンロードボタンをクリックします。

MySQLコネクタダウンロードトップの画像

Select Operating Systemの部分は、Microsoft Windowsを選択してDownloadボタンをクリックします。

MySQLコネクタダウンロード選択の画像

続いて表示される画面には、LoginやSign Upなどと表示されていて少々ビビりますが、落ち着いて下にあるNo thanks, just start my download.をクリックしましょう。英語が分かると安心ですね。

MySQLコネクタダウンロードボタンの画像

ファイル保存を促すメッセージ画面が表示されますので、保存をクリックします。

MySQLコネクタダウンロード保存の画像

ダウンロードが完了したらウイルスチェックを忘れずにして、ダウンロードしてファイルをダブルクリックしてインストーラを起動します。
わたしの場合、mysql-connector-net-6.9.10.msiというファイルでした。6.9.10などの数字の部分は、バージョンなので変わると思います。

インストール中にChoose Setup Typeと表示された場合は、Typical(典型的な)を選択してNext>Installへと進んでください。

MySQLコネクタインストール設定の画像

インストールは、以上です。
MySQLコネクタは、インストールしておくだけです。
C#から使う場合の設定は、Visual Studio側で行います。

C#からMySQLに接続するための設定(VisualStudio)

簡単なコンソールアプリを作ってテストします。

Visual Studioを起動して、

ファイル >新規作成 >プロジェクト…

から「コンソールアプリ」を選択して、プロジェクト名をMySQL接続テストとしてください。

プロジェクトが作成されたら、まず初めにMySQLコネクタを使うための設定をする必要があります。

ソリューションエクスプローラのMySQL接続テストの下に参照という項目があります。
参照の部分を右クリックして参照の追加…を選びます。

MySQLコネクタ参照設定1の画像

参照は、外部のプログラムをプロジェクト内から呼び出して使うための機能です。
今回は、先ほどインストールしたMySQLコネクタをプロジェクトから参照します。

参照マネージャーというウインドウが開きます。
アセンブリ >フレームワーク がデフォルトで選択されていると思います。

右上の検索ボックスにmysqlと入力してみてください。(沢山リストアップされるのでテキストボックスで検索した方がはやいです)

MySQLコネクタ参照設定の画像

MySQL.Dataという項目がリストアップされます。
ここで左側のチェックボックスにチェックを入れOKボタンをクリックします。(画像ではMySQL.Dataが2つ存在しますが、上の方を1つチェックすれば大丈夫です)

ソリューションエクスプローラの参照項目にMySQL.Dataが追加されていればOKです。

MySQLコネクタ参照チェックの画像

C#からMySQLを使うための設定は以上です。

MySQLの起動とデータベースの確認(XAMPP)

C#から接続する前にMySQL自体を起動しておかなければなりません。MySQLの起動と合わせてデータベースの内容確認もしておきます。

MySQLをインストールした場合、その名のとおりmysqlというデータベースが最初から存在します。
実際にmysqlというデータベースが存在するのか確認を行ってみます。
XAMPPをインストールしていれば以下のように確認できます。

XAMPPコントロールパネルを起動します。

XAMPPコントロールパネル起動の画像

XAMPPコントロールパネルが起動したらApacheMySQLのそれぞれ右側にあるStartボタンをクリックします。
MySQLを使うだけであれば、Apache(サーバ)を起動する必要はないのですが、この後ブラウザからデータベースを確認できるphpMyAdminを使うためApacheを起動しています。

XAMPP_ApacheとMySQLの起動の画像

しばらくするとボタンの表示がStopに変わり、ApacheとMySQLの文字の背景が緑色に変わります。
正常起動した場合は、緑色です。赤や黄色だと正常に起動していません。確認を行って下さい。

次にMySQLの部分のAdminというボタンをクリックします。

XAMPP_PHPMyAdminの起動の画像

ブラウザでphpMyAdminが起動します。
phpMyAdminは、ブラウザ上でMySQLをビジュアルに操作できるソフトです。データベースやテーブルの作成がある程度ビジュアル操作で行うことができます。

mysqlというデータベースが存在していることが分かります。

phpMyAdminのイメージ画像

ちなみにmysqlというデータベースは、大事なデータベースなので書き換えたり削除したりしないでください。
このままMySQLは起動したままにしておきます。

MySQL接続テストプログラムの作成(Program.cs)

XAMPPをインストールした場合、MySQLへの接続情報は、デフォルトでは下記の表のようになっています。

MySQLホスト名localhost
ユーザ名root
パスワードなし

このデータベースにC#から接続するソースコードは以下の通りです。

ポイントとしては、プログラムの先頭でMySQLコネクタのライブラリを使うための記述を忘れないことです。

using MySql.Data.MySqlClient;

うまくMySQLに接続できると以下のコンソール画面となります。

MySQLと接続成功の画像

それでは、Visual StudioソリューションエクスプローラのProgram.cs内を編集して以下のソースコードを実行確認してみてください。

Program.cs

コメント

  1. mike2131 より:

    “Program.cs内を編集して以下のソースコードを実行確認してみてください。”のソースコードが無いように見えます。もう、公開してないという事なのでしょうか。もし可能であれば、再度掲載していただけたら幸いです。

    • dennou より:

      こんばんは。管理人です。
      一応わたしの環境では見えているのですが、ソースコードが見えないということですので、以下に再度掲載しておきます。

      Program.cs

      /*
      ●Visual StudioとMySQLを接続するプログラムを作成するには
      ソリューションエクスプローラー
      	「参照」を右クリックー「参照の追加...」ー「アセンブリ」-「フレームワーク」を選択
      	
      	「MySql.Data」にチェックを入れて「OK」ボタンを押す
      			…	表示されるフレームワークの数が多すぎるので
      				検索ボックスに「mysql」と入力するとはやい
      */
      
      using System;
      // MySQLを使うため
      using MySql.Data.MySqlClient;
      
      namespace MySQL接続テスト
      {
      	class Program
      	{
      		static void Main(string[] args)
      		{
      			// MySQLへの接続情報
      			string server = "localhost";		// MySQLサーバホスト名
      			string user = "root";			// MySQLユーザ名
      			string pass = "";			// MySQLパスワード
      			string database = "mysql";		// 接続するデータベース名
      			string connectionString = string.Format("Server={0};Database={1};Uid={2};Pwd={3}", server, database, user, pass);
      			// MySQLへの接続
      			try
      			{
      				MySqlConnection connection = new MySqlConnection(connectionString);
      				connection.Open();
      				Console.WriteLine("MySQLに接続しました!");
      				// 接続の解除
      				connection.Close();
      			}
      			catch (MySqlException me)
      			{
      				Console.WriteLine("ERROR: " + me.Message);
      			}
      		}
      	}
      }
      

      見えない理由の推測:
      サイト上のProgram.cs部分は、GitHub掲載後に取得したJavaScriptタグコードをサイトに埋め込んだものですので、環境によって見えないのかもしれません。失礼しました。

      一応大元のリンク先は、以下URL
      https://gist.github.com/mrgarita/6dd172fee8f9c10639a83e506f78bb7a#file-program-cs

      • mike2131 より:

        御対応ありがとうございました。
        社内Proxy経由だとgithubがSEC_ERROR_UNKNOWN_ISSUERで見れないという事が分かりました。
        タイのスマホのテザリング経由だと問題なく見られました。
        githubくらい見せてほしいとシステム部にリクエストしてみます。

        • dennou より:

          なるほど。
          最近のセキュリティに関する警告は不便さの方が多く感じますね。(でもそれだけ攻撃が多いという事?)
          いい勉強になりました。