【c#】MySQLを操作する方法

C#

C#でMySQL(MariaDB)を操作する方法を紹介します。
WindowsでVIsualStudioを使って開発している方を想定しています。

MySQLコネクタをインストールする

1.下記のサイトへ移動します。

fw_error_www
fw_error_www

2.”ADO.NET Driver for MySQL (Connector/NET)”横の[ダウンロード]をクリックします。

2の説明画像

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コネクタはあくまでもコーディングするときに必要になるソフトウェア、という位置づけです。

以上となります。
参考になれば幸いです。

タイトルとURLをコピーしました