monoからMySQLに接続できたよ!
前回のエントリで書いた「monoからMySQLへの接続」に関しての続報ですが、
手元の環境(FreeBSD7.0+mono1.2.5)でMySQLに接続してデータを読み出すことができました!!
やったね!(≧▽≦)
やはりMySQL Connector/Netのソースが間違っていたみたいです。
【Monoで他のDBも使ってみたよ!(PostgreSQL、MySQL編) 】
http://codezine.jp/article/detail/2913?p=4
こちらの記述を元に修正してコンパイルしたところ、問題なく動きました。
今回修正してコンパイルしたmono上での動作確認済みデータドライバのバイナリを配布しますので、興味のある方はご利用ください。
動作は無保証です。問題があった場合は配布を中止しますのであしからず。
MySQL Connector/NET データドライバ修正版(116KB)
GACへの登録はrootになって以下のようにします。
#gacutil -i MySql.Data.dll -package 2.0
今回はサンプルとして以下のようなコードを使用しました。
using System; using System.Data; using MySql.Data.MySqlClient; namespace MySqlExample { public class Select1 { public static void Main(string[] args) { // 接続文字列 string constr = "Server=localhost;Database=***;Uid=***;Pwd=***;CharSet=utf8"; // SQL文字列 string sstr = "SELECT user_id, user_name, user_password FROM user;"; using (MySqlConnection dbcon = new MySqlConnection(constr)) { using (MySqlDataAdapter da = new MySqlDataAdapter(sstr, dbcon)) using (DataTable dt = new DataTable()) { // SELECT実行 da.Fill(dt); foreach (DataRow dr in dt.Rows) { Console.WriteLine("ID:{0} NAME:{1} PASS:{2}", dr[0], dr[1], dr[2]); } } } } } }
コンパイルは.NET Framework2.0用なのでgmcsを使用します。
%gmcs mysql_test.cs -r:System.Data.dll -r:MySql.Data.dll
実行するとこんな感じ
%mono mysql_test.exe ID:1 NAME:nagi PASS:pass1 ID:2 NAME:zange PASS:pass2 ID:3 NAME:tsugumi PASS:pass3
これで何かすごいことができるわけではないけど、
なんだか長年の悩みが晴れてすっきり!
今私が生きてる界隈では超絶にマイナーなmono/C# or VB.NETですが、なんとかして陽の目を見せてあげたいな。
がんばろっと。