C#でMySQLを使う - 1.Visual Studio 2019＋MySQL 5.7 Connectorsインストール編

# 前提と準備

## C#の記事
- C#でMySQLを使う - 1.開発環境インストール【この記事】
- [C#でMySQLを使う - 2.SELECT・画面表示](https://qiita.com/kazumi75kitty/items/dd391cab06762555dc5d)
- [C#でMySQLを使う - 3.追加更新と削除](https://qiita.com/kazumi75kitty/items/65f8ae261bbe61964627)
- [C#でのデータベースのデータのNULLかどうかの判定](https://qiita.com/kazumi75kitty/items/64002467350a1ea08ab0)
- [C#のdelegate(デリゲート)と=>(ラムダ式)はC言語の関数へのポインタに似た扱い](https://qiita.com/kazumi75kitty/items/fdf4e1d2ea8e9c9326ba)
- [動的にコントロールを追加 - 1.ボタンクリック](https://qiita.com/kazumi75kitty/items/2e3f4c10a93d26032382)
- [動的にコントロールを追加 - 2.テキストボックスの参照](https://qiita.com/kazumi75kitty/items/093b1d679e016782d3af)
- [動的にコントロールを追加 - 3.DB(MySQL)から動的に作成](https://qiita.com/kazumi75kitty/items/3bbb8afdfbc21fb6b3f1)

最近私がプライベートで、[三浦半島の一眼レフ写真や小さなアトラクションを通し、多くの方が自然と歴史などを通して感じていかれるWebサイトを制作](https://kazumi-jam.chips.jp/yokosuka/photo_001/)しておりまして、[ロリポップ！レンタルサーバー](https://lolipop.jp/)にPHP＋MySQLを使用しています(\*´꒳`\*)

そのMySQLのデータ登録ですが、インターネットでPHPからMySQLを登録できるとなると、PHP側で登録用のアカウントを作らなければならなかったり、ログインなどのセキュリティを強固にする必要があっても、やはりインターネット上である以上は限度があるため、**ローカルでMySQLにデータ登録し、その生成したSQLパッチを運用中のサーバーに適用しています**。そうなるとインターネット上に管理画面を作る必要がなく、多少はマシになるものの、ローカルでMySQLデータ登録のプログラムを作成しなければなりません。

そこで、私の場合は、**WindowsプログラムをC#で制作し、そこからMySQLに接続し、SQLパッチをテキストとして生成するというやり方**を採っています。その際にどうしても必要なのは、**C#(.NET)からMySQLに接続できる**ための外部ライブラリを使い、Visual Studioには標準で用意されていないため、サードパーティー製のコネクタを用意する必要があったので、インストールしました(˶ ･ᴗ･ )੭

## 環境
- OS：Windows 10 Pro (インストール再現のためWindowsサンドボックス使用)
- 開発環境：Visual Studio 2019
- データベース：MySQL 5.7

## 前提
特になし

# 作業手順
今回は、開発環境側でインストールをしてみます。私のメインの環境にすでにC#でMySQLが使える状態だったので、インストールはWindowsサンドボックスで再現することにしました(\* ॑꒳ ॑\* )⋆\*

## Visual StudioとMySQLのインストール
### Visual Studio 2019のインストール
Visual Studioは短期間に2015→2017→2019…とサイクル期間が短いようですが、たぶん他のVisual Studioのバージョンでもいけると思いますが、私は2019を使っています

![Visual Studio 2019](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617906/8a042d34-acf2-b36f-b803-ffeb5a96d406.png)

そのままデフォルトでインストールしました( ˙꒳​˙ᐢ )
ちなみにC#を使う項目はすべてインストール選択しています

### MySQLのインストール
MySQL 8.0はLinuxでサーバー構築で使いまくったけど、Windows用に置いてあるのが5.7だったので、5.7の方を使いました

![MySQL 5.7](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617906/b0be69ff-1a75-9cdb-cb79-a7e41a6005da.png)

「**Developer Default**」を選択してインストール。開発向けデフォルトでは、画面のように「**MySQL Connectors**」が項目としてピックアップされていて、Javaや.NET、C/C++などに対応しています。

## Visual Studioで使用する
### 参照を追加してみる
Visual Studioを起動して、新規のC#フォームアプリケーションプロジェクトを作成。
そうすると、ソリューションエクスプローラーに「参照」があるので、参照を追加して「参照マネージャー」を開く。

![MySql.Data](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617906/6e02427c-925e-2f9f-b1f5-0ccf6785f84e.png)

「アセンブリ」の中に実際自動で認識してくれるので、参照マネージャーで、右上の検索画面に「mysql」を入力すると、↑の画面のように「**MySql.Data**」が何行も出てくるので、とりあえず1つだけ、どれでもいいので選択して(行左にマウスを当てると出てくるチェックボックスをON)「OK」を選択すると…

![MySQLを使う](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617906/9e206a77-07e1-e99b-b84f-e9e9cd0b4f0c.png)

「**MySql.Data**」が追加されました(\*˘꒳˘\*)
この中にMySQLを扱うC#オブジェクトが入っているのです。

### ソースで記述する
実際にソースで使うには、最初に「using」で指定しておくと便利だったので、私はそうしました

```c#:sample1.cs
using System;
using System.text;
…(中略)…

using MySql.Data.MySqlClient;   // これがMySQLを扱うためのオブジェクトを含んでいる

namespace WindowsForms1
{
    class sample1
    {
        public void sampleMethod()
            try {
                // 接続情報を文字列で与える
                string connStr = "server=127.0.0.1;user id=test;password=test1;database=manutest";
                MySqlConnection conn = new MySqlConnection(connStr);
                
                // 接続を開く
                conn.Open();
                
                // ここにSQLの処理を書く
                
                // 接続を閉じる
                conn.Close();
            }
            catch (MySqlException mse)
            {
                // MySqlの接続エラー処理をここに書く
            }
        }
    }
}
```

こういう流れでソースを書いていくもので、実際にMySQL ConnectorsのC#に関する公式の根拠が出回っていなかったので、第三者の情報と実際Visual Studioのコーディングでポップアップされるトピックを頼りにするしかなかったのです…( ´ •̥  ̫ •̥ ` )

![using](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617906/65060965-d44f-176f-3f14-6a2dff18f22b.png)

![MySQL接続オブジェクトが認識できた](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617906/8f9653a2-f041-84e2-943a-1c60c248c77d.png)

実際エラーがなく基本的なコーディングの流れはつかめた(˶ ･ᴗ･ )੭⚐⚑

# 次回
Visual StudioにMySQLを導入できたので、次は実際にMySQLに接続して、データのやりとりも記事にまとめる予定です٩(.› ‹.♡)۶

# 参考文献
　1. [MySQL Connector/NETを使ってみよう](http://web.sfc.wide.ad.jp/~tinaba/tutorials/mysql-net/)
　2. [C#からMySQLに接続する](https://dianxnao.com/c%E3%81%8B%E3%82%89mysql%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B/) - 電脳産物
　3. 【Visual Studio】C#からMySqlの使い方　接続するには？SQL文を実行するには？ - 困ったー(ページは削除されたようです)
　4. [C#でMySQLからSELECTした結果を取り出したい](https://qiita.com/rana_kualu/items/06afeb7359b95a602dbd)