はかますたいる!きょろの技的雑記

井上恭輔(@kyoro353)の私的かつ技的な日記です。米国サンフランシスコで暮らすエンジニアです。

monoからMySQLに接続できたよ!

前回のエントリで書いた「monoからMySQLへの接続」に関しての続報ですが、
手元の環境(FreeBSD7.0+mono1.2.5)でMySQLに接続してデータを読み出すことができました!!


やったね!(≧▽≦)


やはりMySQL Connector/Netのソースが間違っていたみたいです。


【Monoで他のDBも使ってみたよ!(PostgreSQLMySQL編) 】
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ですが、なんとかして陽の目を見せてあげたいな。
がんばろっと。