C#でMySQL(MariaDB)を操作する方法を紹介します。
WindowsでVIsualStudioを使って開発している方を想定しています。
MySQLコネクタをインストールする
1.下記のサイトへ移動します。
2.”ADO.NET Driver for MySQL (Connector/NET)”横の[ダウンロード]をクリックします。
3.”Select Operating System:”で、”Microsoft Windows”を選択し(①)、[Download]をクリックします(②)。
4.[No thanks, just start my download.]をクリックします。
5.ダウンロードされたインストーラーを開きます。
6.[NEXT]をクリックします。
7.[Typical]をクリックします。
8.[Install]をクリックします。
MySQLを起動する
本記事では”XAMPP”を用いてMySQLを起動する方法を紹介します。
“XAMPP”のインストール方法はこの記事を参照してみてください。
1.XAMPPを起動します。
2.”MySQL”の横にある[start]をクリックして、MySQLを起動します。
プロジェクトへMySQL.Dataを追加する。
1.VisualStusioで、MySQLを操作させたいプロジェクトを起動します。
2.ソリューションエクスプローラーから”参照”を右クリックし、[参照の追加(R)…]をクリックします。
3.アセンブリの一覧から”MySQL.Data”の横にチェックを入れ(①)、[OK]をクリックします(②)。
プログラムの書き方
ここでは、MySQLコネクタを使ってプログラムの書く方法を紹介します。
SELECTの実行結果を取得する。
SQLのSELECT構文の結果を取得するには、MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()メソッドを使えば良いかと思います。
以下のサンプルでは、SELECT文の結果をSystem.Data.DataTableへ格納します。
string server = "{ここへMySQLのサーバホスト名を入力する}";
string user = "{ここへユーザー名を入力する}";
string pass = "{ここへユーザーのパスワードを入力する}";
string database = "{ここへ接続したいデータベース名を入力する}";
string connectionString = string.Format("Server={0};Database={1};Uid={2};Pwd={3}", server, database, user, pass);
MySql.Data.MySqlClient.MySqlConnection cn = new MySql.Data.MySqlClient.MySqlConnection(connectionString);
MySql.Data.MySqlClient.MySqlCommand com = new MySql.Data.MySqlClient.MySqlCommand("{ここへSQLを入力する}", cn);
System.Data.DataTable tb = new System.Data.DataTable();
cn.Open();
try
{
tb.Load(com.ExecuteReader());
//取得結果のN行目1列目を参照する
for (int i1 = 0; i1 < tb.Rows.Count; i1++)
{
tb.Rows[i1][0].ToString();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
cn.Close();
}
UPDATE,INSERT,DELETEでデータベースを操作する。
SQLのUPDATE,INSERT,DELETE構文でテーブルの内容を変更する場合にはMySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()メソッドを使えば良いです。
トランザクションも合わせて実装しておくべきかと思います。
以下のサンプルは、トランザクションを用いてデータベースを操作します。
List<string> sqlCommands = new List<string>();
sqlCommands.Add("{ここへ1文目のSQLを入力する}");
sqlCommands.Add("{ここへ2文目のSQLを入力する}");
sqlCommands.Add("{ここへ3文目のSQLを入力する}");
// MySQLへの接続情報
string server = "{ここへMySQLのサーバホスト名を入力する}";
string user = "{ここへユーザー名を入力する}";
string pass = "{ここへユーザーのパスワードを入力する}";
string database = "{ここへ接続したいデータベース名を入力する}";
string connectionString = string.Format("Server={0};Database={1};Uid={2};Pwd={3}", server, database, user, pass);
// MySQLへの接続
MySql.Data.MySqlClient.MySqlConnection cn = new MySql.Data.MySqlClient.MySqlConnection(connectionString);
MySql.Data.MySqlClient.MySqlCommand com = new MySql.Data.MySqlClient.MySqlCommand();
com.Connection = cn;
cn.Open();
com.Transaction = cn.BeginTransaction();
try
{
for (int i1 = 0; i1 < sqlCommands.Count; i1++)
{
com.CommandText = sqlCommands[i1];
com.ExecuteNonQuery();
}
com.Transaction.Commit();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
com.Transaction.Rollback();
}
finally
{
cn.Close();
}
集計関数の実行結果を取得する。
SQLの集計関数の結果を取得したい場合には、MySql.Data.MySqlClient.MySqlCommand.ExecuteScalar()メソッドを使えば良いかと思います。
SQLの結果の1行1列の値を取得できます。
以下サンプルです。変数”ob”にSQLの結果が格納されます。
// MySQLへの接続情報
string server = "{ここへMySQLのサーバホスト名を入力する}";
string user = "{ここへユーザー名を入力する}";
string pass = "{ここへユーザーのパスワードを入力する}";
string database = "{ここへ接続したいデータベース名を入力する}";
string connectionString = string.Format("Server={0};Database={1};Uid={2};Pwd={3}", server, database, user, pass);
// MySQLへの接続
MySql.Data.MySqlClient.MySqlConnection cn = new MySql.Data.MySqlClient.MySqlConnection(connectionString);
MySql.Data.MySqlClient.MySqlCommand com = new MySql.Data.MySqlClient.MySqlCommand("{ここへSQLを入力する}", cn);
Object ob;
cn.Open();
try
{
ob = com.ExecuteScalar();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
cn.Close();
}
補足
ここで紹介したソースコードでexeファイルを作成し、そのexeファイルをMySQLコネクタがインストールされていない環境でも実行することは可能です。
MySQLコネクタはあくまでもコーディングするときに必要になるソフトウェア、という位置づけです。
以上となります。
参考になれば幸いです。