« ネルソン・マンデラ | メイン | 東レの浄水器 TORAY MK203X 買ってみた »

2008年07月09日

 ■ C#でMySQL - メモ

MySql.Data.MySqlClient名前空間に、MSDE/SQL Serverで使われているSqlConnectionなどのクラスと対になっているMySql~というクラスがある。MSDE/SQL ServerからMySQLへの移行の際には、MySQL Connector/Netをインストールした後に各クラスの先頭にMyと付けるだけで移行ができる。

ただ、漢字コードは適切に設定しないと文字化けする。

以下メモ。

クライアント:
 Windows Vista
 Visual C# 2008 Express Edition
 MySQL Connector/Net ? for connecting to MySQL from .NET
http://dev.mysql.com/downloads/
   Ver 5.2 ベータ版
   Ver 5.1 安定版 (.NET 2.0以上向け)   → これを使用
   Ver 1.0 安定版 (.NET 1.1用)

サーバ:
 Windows XP + MySQL 5.1.23

コード:
 MySqlConnectionコンストラクタのパラメータに CharSet=utf8 を追加

データベース作成:
 mysql -u root -p   ← コマンドプロンプトから
 CREATE DATABASE rakuten CHARACTER SET utf8;
 ↑ utf8を指定

MySQLのネットワークアクセス設定 (デフォルトではネットワークアクセスできない)
 mysql -u root -p
 use mysql;
 grant all privileges on *.* to root@192.168.1.4 IDENTIFIED BY 'パスワード'

今回、クラス名の先頭にMyをつけるだけで終わりにしようと思ったが、まだMSDE/Sql Server側にも接続したかったので、トランザクションおよびデータリーダー用のラップクラスを作り、My~に置換するのではなくラップクラスと置き換え、MSDE/Sql ServerとMySQLと、同じソースで両用できる作りとした。

本来はMyと付けるだけで終わりにしたかったのであるが、終わってみれば、共通設定などコピペでとりあえず済ませていた部分が一本化できていコピペが減ったので、まあ良かったかな。

今まで、文字化けが嫌でMySQL + Windowsの組み合わせを避けていたが、いざやってみれば、案外すんなりとうまくいった。 昔はもっと苦労した記憶があるのだが・・・。 運よく、他の人の成功例を見つけられたことも良かったのかもしれない。  それか、接続モジュールのバージョンが上がったおかげか? 昔はVer1.0の .NET Framework 1.1用を試した記憶がある。 ともあれ、うまくいったので、これからはMySQLをますます有効活用できそうだ。 MSDEの2G制限に困っていたので、随時MySQLに移行しようと思う。

投稿者 shupla : 2008年07月09日 22:48

トラックバック

このエントリーのトラックバックURL:
http://diary.w-jp.net/mt-tb.cgi/16