この記事では、C#のコンボボックスにMySQLのテーブルデータの値を登録する方法についてご説明します。
【動画】C#のコンボボックスにMySQLのテーブルデータの値を登録する実際の動き
本題に入る前に、まずは次の動画をご覧ください。
MySQLのテーブルデータから取得したコンボボックスに登録したい値をAddメソッドの引数に指定して実行すると、その値がコンボボックスに表示されます。
コードの流れ
MySQLのデータベースに接続する前準備
C#からMySQLのデータベースに接続するには、「MySqlConnector」と呼ばれるMySQLコネクタが必要です。
「MySqlConnector」を使うには、「MySqlConnector」のインストールが必要なので、お使いの環境で「MySqlConnector」がインストールされていない場合は下の内容をご参照ください。
参考 「MySqlConnector」のインストールTech-vb.comMySQLのテーブルデータとコンボボックスの例
MySQLのテーブルデータ
今回は以下のMySQLのテーブルデータを用意しました。
今回は「name」のフィールドの値をコンボボックスに出力します。
フォーム
今回はフォーム上に以下のコンボボックスを設置しました。
MySQLのテーブルデータの値をコンボボックスに登録した結果は下のとおりです。
コンボボックスに登録されたMySQLのテーブルデータ(「name」のフィールド)の値が表示されています。(「name」のフィールドの値)
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行目です。
<!-- 接続文字列 -->
<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" />
コードの説明
以上のコードは、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 System.Configuration;
using MySqlConnector;
namespace wfcs_0081
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(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 (var connection = new MySqlConnector.MySqlConnection(connectionString))
{
// MySQLのデータベースファイルを開く
connection.Open();
// SELECT文を用意する
string commandText = "SELECT name FROM syain";
// MySqlCommandインスタンスを生成する
var command = new MySqlCommand(commandText, connection);
// SELECT文を実行し、結果をreaderに格納する
using (var reader = command.ExecuteReader())
{
// 取得したデータの最終行まで処理を繰り返すwhileループ
while (reader.Read())
{
// 値をコンボボックスに追加する(フィールド名が「name」の値)
comboBox1.Items.Add(reader["name"].ToString());
}
}
}
}
}
}
注目すべきコード①
最初に見て頂きたいのは5行目です。
using MySqlConnector;
「MySqlConnector」はMySQLコネクタを使うのに必要な名前空間です。
MySqlConnectorは「MySQLのデータベースに接続する前準備」の説明でお話したMySqlConnectorのことです。
C#からMySQLへの接続にはこのMySqlConnectorが必要になりますが、「MySQLのデータベースに接続する前準備」の説明でお話したMySqlConnectorを事前にインストールをしておかないとエラーになります
なので、忘れずにMySqlConnectorをインストールしておきましょう。
参考 「MySqlConnector」のインストールTech-vb.com注目すべきコード③
次に見て頂きたいのは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行目から42行目です。
// MySqlConnectionインスタンスを生成する
using (var connection = new MySqlConnector.MySqlConnection(connectionString))
{
// MySQLのデータベースファイルを開く
connection.Open();
コードの説明
以上のコードは、MySqlConnectionオブジェクトを作成し、MySQLのデータベースに接続している処理のコードです。
以上のコードが正常に実行されれば、MySQLのデータベースに接続されます。
注目すべきコード⑥
次に見て頂きたいのは45行目から62行目です。
// SELECT文を用意する
string commandText = "SELECT name FROM syain";
// MySqlCommandインスタンスを生成する
var command = new MySqlCommand(commandText, connection);
// SELECT文を実行し、結果をreaderに格納する
using (var reader = command.ExecuteReader())
{
// 取得したデータの最終行まで処理を繰り返すwhileループ
while (reader.Read())
{
// 値をコンボボックスに追加する(フィールド名が「name」の値)
comboBox1.Items.Add(reader["name"].ToString());
}
}
// MySQLのデータベースの接続を閉じる
connection.Close();
コードの説明
以上のコードは、MySQLのテーブルデータを取得してその値をコンボボックスに登録する処理のコードです。
コードの詳細
45行目のコードは、コンボボックスに登録したい値を取得するSELECT文を用意するコードです。
今回は「name」のフィールドの値をコンボボックスに登録するため、SELECT文に「name」を指定しています。
48行目のコードではMySqlCommandインスタンスを生成しています。
51行目でSELECT文を実行し、結果をreaderに格納します。
54行目は取得したデータの最終行まで処理を繰り返すwhileで、57行目でMySQLのテーブルから取得したデータを1行ずつコンボボックスに登録します。
62行目のコードでは、MySQLのデータベースの接続を閉じます。
動作確認
「MySQLのテーブルデータとコンボボックスの例」をご覧ください。
【注意】参照設定が必要です
一つ注意点があるのですが、先ほどのコードを動かすには参照設定が必要です。
「System.Configuration」の項目を追加しないと、「ConfigurationManager」が存在しないとのことでエラーになってしまいます。
本コードを実行する際は、「System.Configuration」の項目を追加しましょう。
最後に
この記事では、C#のコンボボックスにMySQLのテーブルデータの値を登録する方法についてご説明しました。
C#のコンボボックスにMySQLのテーブルデータの値を登録したいときは本記事を参考にしてみてくださいね。
プログラミングのスキルを習得するなら
プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。
プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。











