.NET TIPS

[ADO.NET]MySQLデータベースに接続するには?[C#、VB、2.0、3.0、3.5、VS 2005、VS 2008]

デジタルアドバンテージ 一色 政彦
2008/09/25

 MySQLは、特にインターネット上のWebサイトやサービスで広く活用されているオープンソースのデータベースである。主にPHP/Perl/Pythonなどの言語と組み合わせて使われることが多く、これらにより作られたWebシステムは「LAMP」(Linux+Apache+MySQL+PHP)もしくは「WIMP」(Windows+IIS+MySQL+PHP)と呼ばれる。

 WIMPというシステム形態を取ることで、Windowsシステムであっても、オープンソースにより生み出された多彩なWebアプリケーションを活用できるメリットがあり、システム構築の選択肢が大きく広がる。そのような理由で実際にWIMPのWebシステムを構築すれば、ほかのASP.NETなどの.NETプログラムからも、そのデータベースに連携したいというニーズが自然と生まれてくるだろう。

 .NETのデータベース・アクセス・テクノロジであるADO.NETは、もちろんSQL Serverとの親和性が特に高いが、MySQLデータベースに対しても利用することができる。そこで本TIPSでは、ADO.NETを使ってMySQLデータベースに接続する方法を紹介する。

MySQL向けのADO.NETプロバイダのインストール

 実際にMySQLデータベースに接続するには、MySQL向けのADO.NETプロバイダ「Connector/Net」をインストールする必要がある。まずはConnector/Netを次のリンクからダウンロードしてほしい(執筆時点の最新版は「Connector/Net 5.2.3」。「Windows Binaries (ZIP)」をダウンロードして、インストーラを実行すればよい)。

 Connector/Net 5.1でVisual Studio 2005に対応しており、Connector/Net 5.2でVisual Studio 2008(以降、VS 2008)にも対応している。

 またConnector/Netは、MySQLのバージョン3.23〜5.0(以降)に対応している(とヘルプ・ドキュメントに記述されているが、筆者がMySQL 4.xで試したところ、VS 2008の[サーバー エクスプローラ]でエラーが発生してうまく接続できなかった。MySQLの最新版「5.0.67」では問題なかった)。

Connector/NetによるADO.NETプログラミング

 Connector/NetはADO.NETの標準的なプロバイダとして実装されているため、その利用方法は、SQL Serverの場合とほとんど変わらない。以下では、(Windowsフォームの)DataGridViewコントロールにMySQLデータベース上のテーブルをバインドして、テーブルの内容を表示するだけのWindowsアプリケーションの開発手順を、画面で簡単に紹介する。

[サーバー エクスプローラ]の[データ接続]を右クリックして[接続の追加]をクリックすると、下の画面の[データ ソースの変更]ダイアログが表示される。
[データ ソースの変更]ダイアログの[データソース]欄から「MySQL Database」を選択して[OK]ボタンをクリックする。これにより、下の画面の[接続の追加]ダイアログが表示される。
[接続の追加]ダイアログで、サーバ名、ユーザー名、パスワード、データベース名を入力し、[テスト接続]ボタンをクリックして「接続がうまくいくか」を確かめる。[詳細設定]ボタンをクリックすると、下の画面の[詳細プロパティ]ダイアログが表示される。
[詳細プロパティ]ダイアログでは、[Character Set](キャラクタ・セット:文字コード体系)や[Port](ポート番号)の設定などが行える。MySQLデータベースと同じキャラクタ・セット(「UTF-8」や「EUC-JP」など)を、ここで設定しておく必要がある。設定した内容は接続文字列として、ダイアログの下の位置に表示される。設定が完了したら、[OK]ボタンをクリックしてダイアログを閉じ、続いて[接続の追加]ダイアログの[OK]ボタンをクリックして、データ接続の追加を完了する。完了すると、次の画面のように、[サーバー エクスプローラ]にデータベースのテーブルなどが表示される。
後は、[ツールボックス]から[DataGridView]コントロールをWindowsフォーム・デザイナにドラッグ&ドロップし、右肩の[DataGridView タスク]メニューにある[データ ソースの選択]コンボボックスから[プロジェクト データソースの追加]を選択する。これにより、[データ ソース構成ウィザード]が表示されるので、先ほど追加したデータ接続の設定を使って任意のテーブルを選択してデータセットを作成すればよい。
以上の手順で作成したアプリケーションを実行したのが次の画面である。
MySQLデータベースをDataGridViewコントロールに連結するサンプル・アプリケーションの開発手順

 上記の開発手順の中での注意点は、[詳細プロパティ]ダイアログで[Character Set]を設定しているところだ。この設定がMySQLデータベースのキャラクタ・セットと一致していないと文字化けしてしまう。接続文字列の[Character Set]に設定可能な、日本語のキャラクタ・セットの値は以下の表を参考にしてほしい。

キャラクタ・セット 接続文字列に指定する値
UTF-8 utf8
EUC-JP ujis
SHIFT-JIS sjis
接続文字列の[Character Set]に設定する値
接続文字列中では、Character Setは「charset」と略すこともできる。

Connector/Netのクラス群

 以上のようにVisual Studioを使っていれば、MySQLということをあまり意識せずに、データベースに接続できる。

 一方、コードによりデータベースを接続する場合は、SQL Server向けのADO.NETクラス群を使った開発とほぼ同じで、単にそのクラス名のプレフィックスを「Sql」から「MySql」に変えるだけである。SQL ServerとMySQLの代表的なクラスを対比して表にまとめた。

Data Provider for SQL Server MySQL Connector/Net
SqlConnection MySqlConnection
SqlCommand MySqlCommand
SqlDataAdapter MySqlDataAdapter
SQL Server向けとMySQL向けのADO.NETクラスの対比
SQL Server向けのADO.NETクラスは、主にSystem.Data.SqlClient名前空間に属する。
MySQL向けのADO.NETクラスは、主にMySql.Data.MySqlClient名前空間に属する。

 このように、Connector/Netのクラス群を用いてADO.NETプログラミングをする場合も、SQL Serverで培った知識が生かせる。End of Article

利用可能バージョン:.NET Framework 2.0
利用可能バージョン:.NET Framework 3.0
利用可能バージョン:.NET Framework 3.5
カテゴリ:データベース 処理対象:プロバイダ

この記事と関連性の高い別の.NET TIPS
[ASP.NET]Express Edition以外のSQL Serverでフォーム認証を利用するには?
アプリケーション内でデータベースをアタッチするには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間