この記事では、C#からMySQLのデータベースに接続する方法についてご説明します。
【動画】C#からMySQLのデータベースに接続する実際の動き
本題に入る前に、まずは次の動画をご覧ください。
MySqlConnectionインスタンスを生成し、MySQLのデータベースに接続するのに必要な接続文字列を参照してMySQLのデータベースに接続します。
コードの流れ
MySQLのデータベースに接続する前準備
C#からMySQLのデータベースに接続するには、「MySqlConnector」と呼ばれるMySQLコネクタが必要です。
「MySqlConnector」のインストール
【手順1】NuGetパッケージの管理を選択する
ソリューションエクスプローラでプロジェクト名を右クリックし、NuGetパッケージの管理を選択します。
【手順2】「参照」を選択し、「MySqlConnector」と入力する
「参照」を選択し、「MySqlConnector」と入力します。
【手順3】「MySqlConnector」が表示されるので選択し、「インストール」ボタンをクリックする
「MySqlConnector」が表示されるので選択し、「インストール」ボタンをクリックします。
【手順4】変更のプレビューダイアログが表示さるので、「OK」ボタンをクリックする
変更のプレビューダイアログが表示さるので、「OK」ボタンをクリックします。
「OK」ボタンクリック後は、インストール処理が実行されて参照が追加されます。
【手順5】インストールが完了したことを確認する
インストールが完了したことを確認します。
以下の画面のとおり「インストール済み」と表示されていればインストールは完了しています。
以上で「MySqlConnector」と呼ばれるMySQLコネクタのインストールが完了し、C#からMySQLへの接続が可能となります。
MySQLのデータベースに接続する前準備は終了となります。
C#のコード(例)
App.configのコード
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<appSettings>
<!-- 接続文字列 -->
<add key="DBConnString" value="server={0};port={1};database={2};user={3};password={4}" />
<!-- 接続したいMySQLのサーバの名称 -->
<add key="serverVal" value="localhost" />
<!-- ポートの値 -->
<add key="portVal" value="3306" />
<!-- 接続したいデータベース名 -->
<add key="databaseVal" value="testdb" />
<!-- MySQLのデータベースに接続するためのユーザ名 -->
<add key="userVal" value="root" />
<!-- MySQLのデータベースに接続するためのパスワード -->
<add key="passwordVal" value="testPass@123456" />
</appSettings>
</configuration>
注目すべきコード①
最初に見て頂きたいのは10行目から25行目です。
コードの説明
以上のコードは、MySQLのデータベースに接続するのに必要な接続文字列を「DBConnString」というキーに設定しているコードです。
10行目のコードにある{0}、{1}、{2}、{3}、{4}それぞれに、13行目から25行目のキーの値が設定されます。
キーの値はForm側のコードで設定されます。
Form側の処理は、「注目すべきコード②」をご覧ください。
なお、{0}から{4}までの設定値は以下の通りです。
- {0}「serverVal」:localhost(接続したいMySQLのサーバの名称)
- {1}「portVal」:3306(ポートの値)
- {2}「databaseVal」:testdb(接続したいデータベース名)
- {3}「userVal」:root(MySQLのデータベースに接続するためのユーザ名)
- {4}「passwordVal」:testPass@123456(MySQLのデータベースに接続するためのパスワード)
フォームのコード
using System;
using System.Windows.Forms;
using MySqlConnector;
using System.Configuration;
namespace wfcs_0015
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// App.configのappSettingsタグ内に記述した「DBConnString」のキーの値を取得して変数「connStrTemplate」に格納する
string connStrTemplate = ConfigurationManager.AppSettings["DBConnString"];
// App.configのappSettingsタグ内に記述した「serverVal」のキーの値を取得して変数「serverVal」に格納する
string serverVal = ConfigurationManager.AppSettings["serverVal"];
// App.configのappSettingsタグ内に記述した「portVal」のキーの値を取得して変数「portVal」に格納する
string portVal = ConfigurationManager.AppSettings["portVal"];
// App.configのappSettingsタグ内に記述した「databaseVal」のキーの値を取得して変数「databaseVal」に格納する
string databaseVal = ConfigurationManager.AppSettings["databaseVal"];
// App.configのappSettingsタグ内に記述した「userVal」のキーの値を取得して変数「userVal」に格納する
string userVal = ConfigurationManager.AppSettings["userVal"];
// App.configのappSettingsタグ内に記述した「passwordVal」のキーの値を取得して変数「passwordVal」に格納する
string passwordVal = ConfigurationManager.AppSettings["passwordVal"];
// connStrTemplateの{0}、{1}、{2}、{3}、{4}の部分を「serverVal」「portVal」「databaseVal」「userVal」「passwordVal」それぞれの値に置き換える
string connectionString = string.Format(connStrTemplate, serverVal, portVal, databaseVal, userVal, passwordVal);
// MySqlConnectionオブジェクトを作成し、接続文字列を使用してデータベースに接続します。
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
// データベース接続を開く
connection.Open();
// データベース接続を閉じる
connection.Close();
}
}
}
}
注目すべきコード①
最初に見て頂きたいのは3行目です。
using MySqlConnector;
コードの説明
「MySqlConnector」はMySQLコネクタを使うのに必要な名前空間です。
MySqlConnectorは「「MySqlConnector」のインストール」の説明でお話したMySqlConnectorのことです。
C#からMySQLへの接続にはこのMySqlConnectorが必要になりますが、「「MySqlConnector」のインストール」の説明でお話したMySqlConnectorを事前にインストールをしておかないとエラーになります
なので、忘れずにMySqlConnectorをインストールしておきましょう。
注目すべきコード②
次に見て頂きたいのは18行目から33行目です。
// App.configのappSettingsタグ内に記述した「DBConnString」のキーの値を取得して変数「connStrTemplate」に格納する
string connStrTemplate = ConfigurationManager.AppSettings["DBConnString"];
// App.configのappSettingsタグ内に記述した「serverVal」のキーの値を取得して変数「serverVal」に格納する
string serverVal = ConfigurationManager.AppSettings["serverVal"];
// App.configのappSettingsタグ内に記述した「portVal」のキーの値を取得して変数「portVal」に格納する
string portVal = ConfigurationManager.AppSettings["portVal"];
// App.configのappSettingsタグ内に記述した「databaseVal」のキーの値を取得して変数「databaseVal」に格納する
string databaseVal = ConfigurationManager.AppSettings["databaseVal"];
// App.configのappSettingsタグ内に記述した「userVal」のキーの値を取得して変数「userVal」に格納する
string userVal = ConfigurationManager.AppSettings["userVal"];
// App.configのappSettingsタグ内に記述した「passwordVal」のキーの値を取得して変数「passwordVal」に格納する
string passwordVal = ConfigurationManager.AppSettings["passwordVal"];
コードの説明
以上のコードは、App.configのappSettingsタグ内に記述した各キーの値を変数に格納する処理のコードです。
18行目では、「DBConnString」のキーの値を変数connStrTemplateに格納しています。
21行目では、「serverVal」のキーの値を変数serverValに格納しています。
24行目では、「portVal」のキーの値を変数portValに格納しています。
27行目では、「databaseVal」のキーの値を変数databaseValに格納しています。
30行目では、「userVal」のキーの値を変数userValに格納しています。
33行目では、「passwordVal」のキーの値を変数passwordValに格納しています。
注目すべきコード③
次に見て頂きたいのは36行目です。
// connStrTemplateの{0}、{1}、{2}、{3}、{4}の部分を「serverVal」「portVal」「databaseVal」「userVal」「passwordVal」それぞれの値に置き換える
string connectionString = string.Format(connStrTemplate, serverVal, portVal, databaseVal, userVal, passwordVal);
コードの説明
以上のコードは、connStrTemplateの{0}、{1}、{2}、{3}、{4}の部分を「serverVal」「portVal」「databaseVal」「userVal」「passwordVal」それぞれの値に置き換える処理のコードです。
- serverVal:localhost(接続したいMySQLのサーバの名称)
- portVal:3306(ポートの値)
- databaseVal:testdb(接続したいデータベース名)
- userVal:root(MySQLのデータベースに接続するためのユーザ名)
- passwordVal:testPass@123456(MySQLのデータベースに接続するためのパスワード)
置き換える前と後の状態は以下の通りです。
変数connStrTemplateには{0}、{1}、{2}、{3}、{4}が含まれていますが、string.Formatを実行すると、{0}、{1}、{2}、{3}、{4}の部分が「serverVal」「portVal」「databaseVal」「userVal」「passwordVal」それぞれの値に置き換わります。(connectionStringに格納されます)
以上により、MySQLへの接続文字列が取得できました。
注目すべきコード④
次に見て頂きたいのは39行目から46行目です。
// MySqlConnectionオブジェクトを作成し、接続文字列を使用してデータベースに接続します。
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
// データベース接続を開く
connection.Open();
// データベース接続を閉じる
connection.Close();
}
コードの説明
以上のコードは、MySqlConnectionオブジェクトを作成し、MySQLのデータベースに接続している処理のコードです。
続けてMySQLのデータベースの接続を閉じています。
コードの詳細
39行目のコードでは、App.configから取得したAccessのデータベースファイルの接続情報(connectionString)を元にMySqlConnectionインスタンスを作成しています。
42行目のコードでは、生成したMySqlConnectionインスタンスのOpenメソッドを実行してMySQLのデータベースに接続しています。
45行目のコードでは、MySQLのデータベースの接続を閉じています。
動作確認
以下の動画でご確認ください。
【注意】参照設定が必要です
一つ注意点があるのですが、先ほどのコードを動かすには参照設定が必要です。
「System.Configuration」の項目を追加しないと、「ConfigurationManager」が存在しないとのことでエラーになってしまいます。
本コードを実行する際は、「System.Configuration」の項目を追加しましょう。
最後に
この記事では、C#からMySQLのデータベースに接続する方法についてご説明しました。
C#からMySQLのデータベースに接続したい時は本記事を参考にしてみてくださいね。
プログラミングのスキルを習得するなら
プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。
プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。














