C#(VisualStudio)からMySQLに接続する方法を説明しています。
2021.0212 管理人より
本記事内容はVisual Studio2017時代に書いたもので内容が古くなっています。
もしお使いの環境がVisual Studio2019以降であれば、以下の新しい記事を参考になさってください。(大分手順が簡単になっています!)
MySQLはワードプレスなどでもおなじみのフリーの代表的なリレーショナルデータベースです。
最近XAMPPをインストールするとMariaDBというデータベースがインストールされますが、基本的にはMariaDBは、MySQLと同じです。
今回は、MySQLの環境としてXAMPPを使っています。MySQLあるいはXAMPPがインストールされていない方はこちらからXAMPPをインストールしてください。
まず接続イメージです。
大枠としてC#もMySQLもそれぞれが一つのアプリケーションであり、独立した存在です。
この2つを繋げる橋渡し役が必要になります。
イメージ図
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にアクセスするときに必要なソフトです。
ダウンロードボタンをクリックします。
Select Operating Systemの部分は、Microsoft Windowsを選択してDownloadボタンをクリックします。
続いて表示される画面には、LoginやSign Upなどと表示されていて少々ビビりますが、落ち着いて下にあるNo thanks, just start my download.をクリックしましょう。英語が分かると安心ですね。
ファイル保存を促すメッセージ画面が表示されますので、保存をクリックします。
ダウンロードが完了したらウイルスチェックを忘れずにして、ダウンロードしてファイルをダブルクリックしてインストーラを起動します。
わたしの場合、mysql-connector-net-6.9.10.msiというファイルでした。6.9.10などの数字の部分は、バージョンなので変わると思います。
インストール中にChoose Setup Typeと表示された場合は、Typical(典型的な)を選択してNext>Installへと進んでください。
インストールは、以上です。
MySQLコネクタは、インストールしておくだけです。
C#から使う場合の設定は、Visual Studio側で行います。
C#からMySQLに接続するための設定(VisualStudio)
簡単なコンソールアプリを作ってテストします。
Visual Studioを起動して、
ファイル >新規作成 >プロジェクト…
から「コンソールアプリ」を選択して、プロジェクト名をMySQL接続テストとしてください。
プロジェクトが作成されたら、まず初めにMySQLコネクタを使うための設定をする必要があります。
ソリューションエクスプローラのMySQL接続テストの下に参照という項目があります。
参照の部分を右クリックして参照の追加…を選びます。
参照は、外部のプログラムをプロジェクト内から呼び出して使うための機能です。
今回は、先ほどインストールしたMySQLコネクタをプロジェクトから参照します。
参照マネージャーというウインドウが開きます。
アセンブリ >フレームワーク がデフォルトで選択されていると思います。
右上の検索ボックスにmysqlと入力してみてください。(沢山リストアップされるのでテキストボックスで検索した方がはやいです)
MySQL.Dataという項目がリストアップされます。
ここで左側のチェックボックスにチェックを入れOKボタンをクリックします。(画像ではMySQL.Dataが2つ存在しますが、上の方を1つチェックすれば大丈夫です)
ソリューションエクスプローラの参照項目にMySQL.Dataが追加されていればOKです。
C#からMySQLを使うための設定は以上です。
MySQLの起動とデータベースの確認(XAMPP)
C#から接続する前にMySQL自体を起動しておかなければなりません。MySQLの起動と合わせてデータベースの内容確認もしておきます。
MySQLをインストールした場合、その名のとおりmysqlというデータベースが最初から存在します。
実際にmysqlというデータベースが存在するのか確認を行ってみます。
XAMPPをインストールしていれば以下のように確認できます。
XAMPPコントロールパネルを起動します。
XAMPPコントロールパネルが起動したらApacheとMySQLのそれぞれ右側にあるStartボタンをクリックします。
MySQLを使うだけであれば、Apache(サーバ)を起動する必要はないのですが、この後ブラウザからデータベースを確認できるphpMyAdminを使うためApacheを起動しています。
しばらくするとボタンの表示がStopに変わり、ApacheとMySQLの文字の背景が緑色に変わります。
正常起動した場合は、緑色です。赤や黄色だと正常に起動していません。確認を行って下さい。
次にMySQLの部分のAdminというボタンをクリックします。
ブラウザでphpMyAdminが起動します。
phpMyAdminは、ブラウザ上でMySQLをビジュアルに操作できるソフトです。データベースやテーブルの作成がある程度ビジュアル操作で行うことができます。
mysqlというデータベースが存在していることが分かります。
ちなみにmysqlというデータベースは、大事なデータベースなので書き換えたり削除したりしないでください。
このままMySQLは起動したままにしておきます。
MySQL接続テストプログラムの作成(Program.cs)
XAMPPをインストールした場合、MySQLへの接続情報は、デフォルトでは下記の表のようになっています。
MySQLホスト名 | localhost |
---|---|
ユーザ名 | root |
パスワード | なし |
このデータベースにC#から接続するソースコードは以下の通りです。
ポイントとしては、プログラムの先頭でMySQLコネクタのライブラリを使うための記述を忘れないことです。
using MySql.Data.MySqlClient;
うまくMySQLに接続できると以下のコンソール画面となります。
それでは、Visual StudioソリューションエクスプローラのProgram.cs内を編集して以下のソースコードを実行確認してみてください。
コメント
“Program.cs内を編集して以下のソースコードを実行確認してみてください。”のソースコードが無いように見えます。もう、公開してないという事なのでしょうか。もし可能であれば、再度掲載していただけたら幸いです。
こんばんは。管理人です。
一応わたしの環境では見えているのですが、ソースコードが見えないということですので、以下に再度掲載しておきます。
Program.cs
見えない理由の推測:
サイト上のProgram.cs部分は、GitHub掲載後に取得したJavaScriptタグコードをサイトに埋め込んだものですので、環境によって見えないのかもしれません。失礼しました。
一応大元のリンク先は、以下URL
https://gist.github.com/mrgarita/6dd172fee8f9c10639a83e506f78bb7a#file-program-cs
御対応ありがとうございました。
社内Proxy経由だとgithubがSEC_ERROR_UNKNOWN_ISSUERで見れないという事が分かりました。
タイのスマホのテザリング経由だと問題なく見られました。
githubくらい見せてほしいとシステム部にリクエストしてみます。
なるほど。
最近のセキュリティに関する警告は不便さの方が多く感じますね。(でもそれだけ攻撃が多いという事?)
いい勉強になりました。
C#初心者です。DBへの接続大変参考になりました。
この後SQLを使いデータを取得する所の記載はないでしょうか?
色々なやり方があるみたいで一貫性がないのでイマイチいいサイトが見つからないなか
このサイトがすごく分かりやすかったので、できれば教えて頂けると有難いです。
がんばるまんさん こんにちは。管理人です。
参考にして頂きありがとうございます。
作成済みのデータベースからSQLを使ってデータ取得するプログラムイメージは以下のような感じです。
下記の例では、mydbというデータベースのtest_tableからデータを取得してコンソールに表示しています。
今回がんばるまんさんの質問を受けて本記事内容をチェックしてみたら、記事の内容が古くなっていたことに気づきました。
現在わたしもVisualStudio 2019で試している最中です。
MySQLとの接続準備など含め色々と変わってしまったので新しく記事を執筆している最中です。SQLを使ったデータの取得も含めて更新予定です。
もうしばらくお待ちください。(誰も待っていないと思うけど…)