MySqlはデータベースサーバとしてよく利用されており、国内でも利用しているケースはたくさんあると思います。
通常はブラウザからマルチデバイスでアクセスしながら使うことが多いと思います。
しかしお客さん用に業務ソフトとして提供する場合にはC#などでウィンドウズアプリとして提供したほうがいいケースもあるでしょう。
ここではC#からMySqlへアクセスする方法などをまとめていきます。
準備編
コネクター
まずはVisualStudioでC#を利用できるようにします。
またMySqlサーバをインストールし、利用できるようにしましょう。
MySqlサーバはウィンドウズ版もリリースされています。開発機に入れれば、ハンドリングが楽になって、開発効率もアップしやすいと思います。
両者を接続して使えるようにするには、コネクターが必要です。
以下より無料でダウンロードできます。
https://www.mysql.com/jp/products/connector/
するとなぜか?MySQLインストーラのおすすめなどもありますが、無視して下の「Download」ボタンを押します。
続いてアカウントが求めらますが「No thank you」を選べばダウンロードが始まります。
インストーラを起動したら、以下の画面まで進めます。
種類選択では「Typical」を選んでインストールすればまず大丈夫でしょう。
参照
次にC#のプロジェクトを作成。
「参照の追加」を実行します。
「アセンブリ」で「MySql.data」を見つけたら、チェック。
これで「参照」のところにMySql.dataが出てきます。
プログラム編
接続する
フォームでボタンを押すと、MySqlへ接続するプログラムを作ります。
まずはプログラムコードから参照できるように「using MySql.Data.MySqlClient;」を追加します。
次にMySQLサーバに必要な文字列を作ってMySqlConnectionへ送ります。
サーバ名(server)は、自機に入れている場合は「localhost」になるでしょう。
データベース名(database )は、利用するデータベースの名前を指定します。
ユーザ名(userid)は変更しないと「root」のままだと思います。
パスワード(password)はMySQLサーバ用に任意に設定したパスワードです。
以上を「=」と「;」を使った以下のような文字列にまとめます。
例えばデータベース名がtestdata、パスワードが1111なら
string sLogin = "server=localhost; database = testdata; userid=root; password=1111; ";
..となります。
あとはそれをMySqlConnection へ送ってからOpenで接続します。
try
{
MySqlConnection connection = new MySqlConnection(sLogin);
connection.Open();
MessageBox.Show("接続しました");
connection.Close();
}
catch (MySqlException me)
{
MessageBox.Show("ERROR: " + me.Message);
}
これをボタン内に記述します。
アプリを実行し、ボタンを押すと「接続しました」と表示されれば大丈夫です。
接続できない?
エラーの場合は、サーバ名、パスワード、ユーザ名、データベース名に間違いがないか確認します。
MySqlをインストールすれば、コンソールが利用できるようになっています。
コマンドラインで
「mysql -u ユーザー名 -D データベース名 -p」
を実行します。
これで接続できれば、ユーザ名等の情報が正しいかどうかチェックできると思います。
SQL文の実行
今度はSQL文を実行するようにしてみましょう。
データ表示用にフォームに「DataGridView」を追加しておきます。
今度はデータテーブルを作ってSQL文を送ります。
SQL文は「app_ai」というテーブルからすべての行を取得させるSelect文を作ります。SQL文字列としては「select * from app_ai」とします。
DataTable dt = new DataTable();
MySqlDataAdapter da = new MySqlDataAdapter("select * from app_ai", connection);
da.Fill(dt);
データを取得したら、データグリッドビューへ接続することでデータがすぐ確認できるようにします。
dataGridView1.DataSource = dt;
つなげたソースはこんな感じ。
try
{
MySqlConnection connection = new MySqlConnection(sLogin);
connection.Open();
DataTable dt = new DataTable();
MySqlDataAdapter da = new MySqlDataAdapter("select * from app_ai", connection);
da.Fill(dt);
dataGridView1.DataSource = dt;
connection.Close();
}
catch (MySqlException me)
{
MessageBox.Show("ERROR: " + me.Message);
}
無事 MySQLに接続できて、SQL文を実行できれば以下のようにテーブルのデータ一覧がでてくるはずです。