BLOG main image

분류 전체보기 (321)
free (36)
영화 (85)
드라마 (21)
게임 (28)
만화/책 (34)
개발 (46)
IT (68)
연예 (3)
Visitors up to today!
Today hit, Yesterday hit
TETRIS
rss
2012. 3. 19. 23:38
회사에서 하는 프로젝트를 너무 거대하게 계획한 면도 있지만, "정말 좋은 코드"로 새롭게 만들어 보겠다는 마음이 있어서 모든 것을 다 맨땅에서부터 만들다보니, 즐거운 점도 있지만 사소한 부분이 문제가 되는 경우가 많다.

원래 사용하던 데이터베이스는 Microsoft SQL Server 였는데, 이번 프로젝트에서는 SQL Server 를 비롯해서 모든 DB 를 지원하며, 특히 기본 DB 를 MySQL 을 사용하기로 계획했다.

MySQL 은 설치도 쉽고, 무료이며, 어떤 언어로도 쉽게 사용할 수 있다.
단, Visual C++ 만 빼고... -_-;

Visual C++ 에서 MySQL 을 사용하려면 MySQL 기본 C API 를 사용하거나, MySQL Connector/C++ 를 사용하거나, MySQL++ 를 사용하면 된다. MySQL++ 가 쉽고 편하다는 평가가 있었지만, 이번 프로젝트에서 기본적으로 고려하는 것은, 쓰기 편한 라이브러리가 아니라 '공식 지원되서 향후 10년간 코드를 업그레이드 하는데 문제가 없을 것'이었기 때문에 MySQL Connector/C++ 를 사용하기로 결정했다.

http://dev.mysql.com/downloads/connector/cpp/ 

기존에 사용하던 APMSetup 은 MySQL 의 include, lib 등이 제거된 상태로 배포되어서, APM 을 모두 지우고 Apache, MySQL, PHP 등을 모두 각 배포본을 이용해서 설치했다.

그리고, MySQL 의 기본 C API 를 이용해서 테스트.
어렵지는 않았으나, 문제는 한글이었다. 
mysql_query 의 인자는 const char * 
여기에 어떻게 UTF-8 을 넘겨줄 것인가?

보통 ANSI 를 Unicode (UCS-2) 로 변환하는 경우나 그 반대는 많았지만,
ANSI 를 UTF-8 로 변환하는 경우는 처음이었다.
물론, C#, JAVA, PHP, Ruby, Python 으로는 문제가 없다. 그냥 되니까.
하지만 나는 VC++ 개발자!!! 
모든 것이 그냥 안되는 것은 기본~

ANSI 를 그대로 UTF-8 로 변환할 수는 없고,
ANSI 를 유니코드로 변환하고, 그것을 다시 UTF-8 로 변환해야 했다.

아, 유니코드를 5년 이상 가지고 주물럭 거렸음에도 아직도 이리 헤맬수가 있단 말이냐...

어쨌든 한글 문제를 해결하고 나서 마음의 평점심과 자신감을 되찾았다.

'필 받은 김에 까짓 MySQL Connector/C++ 도 테스트 해주겠어~~!'

당연히, "더" 편하라고 만들어 놓았을 라이브러리인데, 
처음부터 꼬였다.
컴파일이 안된다. 
온갖 삽질을 다 하고나서 겨우 컴파일 성공.
휴~
이젠 드라이버 받는 시작부터 안된다.
결국 해결은 했으나, 그 후 발생한 수 없이 많은 문제들로 이유조차 잊어먹었다.-_-;

그러나 가장 큰 문제는 쿼리 후 getString("column") 이 안된다는 문제였다.
getInt 는 되는데, getString 이 안된다.
이것은 문자 포멧 문제도 아니다.
무조건 access violance 가 발생하면서 프로그램 크래시.

몇 시간을 구글링도 하고 온갖 수작을 부려봤으나 해결 방법을 찾지 못하다가...
기적적으로 찾아낸 블로그에서MySQL Connector/C++ 라이브러리가 Visual Studio 2005, 2008 로만 빌드되어 있어서, Visual Studio 2010 에서 정상 작동이 안된다는 (getString 에서 오류가 난다는!!!!) 얘기가 있었다. 우어어엉~ 어쩌라고!!!

그런데, 다행이도 MySQL Connector/C++ 라이브러리는 CMake 로 빌드할 수 있는 환경을 제공해주고 있었다. 사실 C++ 이고, Java 고 Visual Studio 나 Eclipse 에서 빌드해주는 혜택만 봤지 콘솔창에서 빌드하는 것을 즐기지 않아서 굉장히 스트레스였는데, 의외로 성공적으로 빌드가 됐다.

그리고 그 빌드 버전으로는 getString 에서 에러가 나지 않는다!

이렇게 행복할수가...!

물론, 솔직히 말하자면 '내가 빌드한 버전'이기 때문에, 다른 곳에서 문제가 발생할까봐 굉장히 두렵지만(...) 오라클에서 곧 비주얼스튜디오 2010 버전으로 빌드한 라이브러리도 제공해주지 않겠어? 하는 희망을 가지고 있다. -_-;

잘 될꺼야. 아무렴 잘 될고 말고...

아, 정말 이번 프로젝트 너무 빡센것 같다.


'개발' 카테고리의 다른 글

맥미니 2012 개조기 (SSD 교체)  (13) 2013.05.06
맥미니 2012 구입기  (0) 2013.05.06
실용주의 프로그래머  (5) 2008.10.13
RSS 리더를 만들다가  (2) 2007.03.05
파이썬을 공부하다  (2) 2007.03.05