모노 2.10 설치. MySql 연결 테스트.
여가생활/Unity,Mono&.Net시작은 유니티였는데... 옆길로 참 많이 새고 있다.
굳이 이런 시도를 해보는 이유는? 모노가 WCF를 지원하고 있다는 것에 눈이 번쩍 띄었기 때문이다.
현재 XMLRPC+PHP로 DB를 호출하고, 이 PHP를 HipHop으로 빌드해 바이너리로 서비스하는 방식을 쓰는 중인데...
닷넷으로 WCF 서비스를 만들고 델파이로 접근해 사용하도록 바꿔준다면 손도 편하고 머리속도 간단해지니까.
게다가 C#은 디버깅도 되잖아? 디버거 없이 날코딩하는 PHP같은 인터프리터 언어는 나이가 먹을수록 부담스러워~~
기왕에 삽질할 꺼면 모노 2.8 이상을 설치해 새 바닥에서 놀자.
우분투에 모노 2.10 설치는 트위터의 @nbridgewater 님이 작성한 스크립트를 쓰면 한방에 해결.
중간 중간에 sudo 암호만 넣어주면 된다. 시간은 좀 오래 걸림.
http://www.integratedwebsystems.com/2011/02/mono-2-10-install-script-for-ubuntu-fedora/
# wget --no-check-certificate https://github.com/nathanb/iws-snippets/raw/master/mono-install-scripts/ubuntu/install_mono-2.10.sh
# chmod 755 install_mono-2.10.sh
# ./install_mono-2.10.sh
위치는 /opt/mono-2.10 에 설치된다. 다음과 같이 윈도에서 #Develop 로 작성한 .Net 4.0 바이너리를 실행시킬 수 있다.
# /opt/mono-2.10/bin/mono ./test.exe
Hello World!
#
MySql의 닷넷용 커넥터는 MySQL 에서 직접 개발 및 배포하고 있다. 라이센스는 GPL.
http://dev.mysql.com/downloads/connector/net/
현재 버전은 6.5.4 이다. 일단 윈도용을 내려받아 설치하자.
#Develop 에서 mysql-test 솔루션을 시작한다. 프로젝트 탐색기의 "참조" 에서 우측키를 누른 뒤 "참조 추가" 메뉴를 클릭하자.
GAC 탭에서 "MySql.Data" 를 선택한 뒤 "확인"을 눌러준다.
http://www.mono-project.com/MySQL 에 MySql 에 접근하는 좋은 예제가 있다.
int형 ID와 varchar형 Name 을 필드로 가지는 테스트용 DB에 접근하는 코드를 다음과 같이 만들어주었다.
using System;
using System.Data;
using MySql.Data.MySqlClient;
namespace mysql_test
{
class Program
{
public static void Main(string[] args)
{
string connectionString =
"Server=hostname;" +
"Database=test;" +
"User ID=user;" +
"Password=password;" +
"Pooling=false";
IDbConnection dbcon;
dbcon = new MySqlConnection(connectionString);
dbcon.Open();
IDbCommand dbcmd = dbcon.CreateCommand();
string sql =
"SELECT ID, Name " +
"FROM test";
dbcmd.CommandText = sql;
IDataReader reader = dbcmd.ExecuteReader();
while(reader.Read()) {
int ID = (int) reader["ID"];
string Name = (string) reader["test"];
Console.WriteLine("Data: " + ID + " " + Name);
}
// clean up
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbcon.Close();
dbcon = null;
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
(#Develop 에서 코드를 복사해 블로그에 붙여넣으면 하이라이팅이 그대로 살아있네~ 좋다!!)
실행시켜보면 자알~ 동작한다.
이제 모노의 GAC에 MySql 라이브러리를 설치해보자. http://dev.mysql.com/downloads/connector/net/ 에서 ".Net & Mono" 를 선택한 뒤 "mysql-connector-net-6.5.4-noinstall.zip" 파일을 다운받아 압축을 푼다. 이 압축파일에 포함된 dll은 모두 소문자로 되어있지만 GAC에 등록하기 위해서는 실제 C#에서 참조할 때와 동일하게 대소문자를 맞춰주어야 한다는 것에 주의!
# cd mysql-connector-net-6.5.4-noinstall/
# cd v2
# cp mysql.data.dll MySql.Data.dll
윈도에서 작성된 바이너리를 옮겨와 다음과 같이 실행시켜보자.
/opt/mono-2.10/bin/mono ./mysql-test.exe