接続成功

試行錯誤を繰り返すうちになんとかC#からConnector/NET経由でMySQLServerへ接続することに成功.これでcharsetの検証できる.(あとはC/NETをコンパイルできるようになれれば完璧だが道は遠い)

コードはこんな感じ.

using System;

namespace CNTNS {

    class ConnectorNETTest {
        
        public static void Main() {
            Console.WriteLine("Hello World!");
            
            MySql.Data.MySqlClient.MySqlConnection conn;
            string myConnectionString;
                
            myConnectionString = "server=127.0.0.1;uid=root;" +
                "pwd=;database=test;charset=sjis";

            conn = new MySql.Data.MySqlClient.MySqlConnection();
            conn.ConnectionString = myConnectionString;
            conn.Open();
            conn.Close();
            
            Console.WriteLine("Hello MySQL!");  
        }
    }
}

しかし問題はどうやったらEclipseC#プラグインJavaでいうところのClasspathをDLLに通せるのかという点.どなたか通りすがりの親切な方いないかしら.

コマンドプロンプトからC#コンパイラを"csc.exe -help"と叩いたらどうやら"/r:<ライブラリへのパス>"で指定できそうだったのでConnector/NETのDLLを指定してやったらうまくコンパイルできた.

>csc /r:D:\mysql\mysql-connector-net-1.0.6-noinstall\bin\net-1.1\release\MySql.Data.dll ConnectorNETTest.cs

ConnectionStringのところに"charset=コード名"を渡してあげれば良い.ここで渡せる名前は昨日のエントリで書いたとおり.

実行するとどうやら最後まで実行されたらしい.

D:\share\workspace\current\CSharp>ConnectorNETTest.exe
Hello World!
Hello MySQL!

MySQLサーバ側で出力しているGeneral Logを見てみると

10 Connect     root@localhost on test
10 Query       SHOW VARIABLES
10 Query       SHOW COLLATION
10 Query       SET NAMES sjis;SET character_set_results=NULL
10 Init DB     test

4行目が若干不恰好ながらもConnector/Jとまったく同じような動きをしていることが確認できた.closeしたつもりがされてないのはちょっと気になるが,今回はそこは気にしない.

とりあえずこれで検証ができる.