.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で培った知識が生かせる。![]()
| 利用可能バージョン:.NET Framework 2.0 利用可能バージョン:.NET Framework 3.0 利用可能バージョン:.NET Framework 3.5 カテゴリ:データベース 処理対象:プロバイダ |
|
||||||||||||
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -









