MySQL++은 이름에서 짐작할수 있듯이 MySQL C API를 보다 사용하기 쉽도록 C++인터페이스로 작성한 것입니다. 
MySQL++은 표준 C++ 컴파일러와 MySQL 데이터베이스를 설치가능한 플랫폼이라면 거의 모든 환경(Windows, Linux, MAC OS X 등)에서 동작가능합니다.

MySQL++과 같이 사용하기에 권장되는 MySQL은 버전 4.1이상 입니다. 그 이하버전에 대해서는 충분한 테스트가 이루어지지 않았다고 합니다.



1. 빌드하기
MySQL++을 컴파일 하기 위해서는 MySQL 설치시 제공하는 *.h 파일들과 라이브러리 파일이 필요합니다.(MySQL을 설치할때 개발지원 항목을 체크해야 합니다.)


MySQL을 개발지원을 포함해 설치하면 위 그림과 같은 화면을 볼수 있습니다. 여기서 include 폴더에 *.h 파일들이 lib/opt 폴더 안에 라이브러리 파일들이 존재합니다.



이제 MySQL++ 솔루션 파일을 열어 위 그림과 같이 추가 포함 디렉토리에 include 경로를, 추가 라이브러리 디렉터리에 lib/opt 경로를 넣어주면 됩니다.(기본적으로 C:\Program Files\MySQL\MySQL Server 5.0 경로 아래 해당 디렉터리 경로가 설정되 있습니다.)


이제 굵은 글씨로 표시된 mysqlpp 프로젝트를 성공적으로 빌드할 수 있습니다. 빌드를 마치면 Release(또는 Debug)폴더 안에 mysqlpp.dll 파일이 생성된것을 확인할수 있습니다.(디버그 버전일 경우 _d 라는 접미사가 붙습니다.)


2. MySQL++ 링크하기
MySQL++을 자신의 프로젝트로 링크해서 사용하기 위해서는 위에서와 비슷한 절차가 필요합니다. 먼저 MySQL의 *.h파일과 라이브러리 파일이 있는 include 경로와 lib 경로를 프로젝트에 설정하고 마찬가지로 MySQL++의 *.h파일과 라이브러리 파일이 있는 경로를 프로젝트에 설정해야 합니다.(*.h 파일들은  MySQL++의 lib폴더에서 찾을수 있습니다.)


3. 매뉴얼
사이트: http://tangentsoft.net/mysql++/doc/ 에서 다운로드 할 수 있습니다.
Specialized SQL Structures와 같은 특징들은 매우 유용하므로 자세히 살펴보는게 좋습니다.


4. 라이센스
MySQL++은 LPGL 라이센스 정책을 따릅니다. 여담이지만 LPGP 라이센스하의 프로젝트들은 공유라이브러리로만 빌드할수 있으며 정적 라이브러리로는 빌드가 불가능 합니다.


5. 다른 라이브러리
MySQL을 wrapping한 라이브러리로 Connector/C++이 있습니다. 

MySQL++과의 차이점은 다음과 같습니다.

   MySQL Connector/C++ MySQL++ 
API Follow JDBC 3.0 API  Non-standard API
The MySQL++ API is "C++-ish" and rich of C++ specific goodies
License GPL(+FLOSS License Exception)
Commercial license upon request 
LGPL 
Status Preview only  Stable GA(Generla Availability) release


6. 예제코드
#include "mysql++.h"

int main(int argc, char *argv[])
{
	// Get database access parameters from command line
	const char* db = 0, *server = 0, *user = 0, *pass = "";
	if (!parse_command_line(argc, argv, &db, &server, &user, &pass)) {
		return 1;
	}

	// Connect to the sample database.
	mysqlpp::Connection conn(false);
	if (conn.connect(db, server, user, pass)) {
		// Retrieve a subset of the sample stock table set up by resetdb
		// and display it.
		mysqlpp::Query query = conn.query("select item from stock");
		if (mysqlpp::StoreQueryResult res = query.store()) {
			cout << "We have:" << endl;
			for (size_t i = 0; i < res.num_rows(); ++i) {
				cout << '\t' << res[i][0] << endl;
			}
		}
		else {
			cerr << "Failed to get item list: " << query.error() << endl;
			return 1;
		}

		return 0;
	}
	else {
		cerr << "DB connection failed: " << conn.error() << endl;
		return 1;
	}
}

'프로그래밍 > 오픈소스' 카테고리의 다른 글

SQLite with Eclipse  (1) 2010.05.06
SWF파일 분석 도구  (0) 2010.04.13
boost library 설치  (0) 2010.03.17
libcurl 사용하기  (0) 2010.03.15
SQLite  (3) 2009.09.11
ACE(ADAPTIVE Communication Environment)  (0) 2009.09.03
MySQL++  (0) 2009.08.21
C++ 암복호화 라이브러리 Crypto++  (0) 2009.08.20
C/C++ XML Parser TinyXml  (1) 2009.08.20
HttpClient와 Jericho Parser를 이용한 HTML 파싱  (0) 2009.07.28
GeoIP를 이용한 IP대역별 국가코드 검색  (1) 2009.07.07
Posted by devop
TAG , ,

댓글을 달아 주세요