.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」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|