MYSQL C++ API를 이용한 QUERY결과 가져오기 소스와 컴파일
컴파일방법 : 리눅스의 경우 아래와 같이 하면 된다. gcc,g++을 이용할 경우 소켓을(-lsocket)을 명시할 필요가 없고 명시하면 오히려 에러가 난다. 하지만 GNU C컴파일러가 아닐 경우 -lsocket이라는 옵션을 추가해야 하며 가끔 -lm(수학라이브러리)를 포함해야 한다. 컴파일에 관한 부분은 경험적으로 익혀야 할 듯 하다.
간단한 옵션을 설명하면 아래와 같다.
-c : 오브젝트 파일로 컴파일한다.
-o : 오브젝트파일을 링크한다.
-L : 링크를 위한 패스를 지정하는 부분이다.
-I(대문자 i) : 소스의 include 파일의 경로를 나타낸다.
-l(소문자 L) : 정적 라이브러리를 링크한다.(mysqlclient는 필수적이다.)
아래는 소스파일을 오브젝트파일로 만드는 과정에다 바로 링크까지 거는 (한 줄에 끝내는) 컴파일 명령의 예이다. 아래의 소스를 이렇게 컴파일 하면 된다. (단, /usr/local/mysql의 경로는 nstream.co.kr의 경우에만 해당된다. 다른 서버는 mysql의 설치 경로를 찾아서 바꿔주기 바란다.)
g++ -o test.cgi test.cpp -L/usr/local/mysql/lib/mysql -
I/usr/local/mysql/include/mysql -lmysqlclient -lnsl
#include <iostream.h>
#include <mysql.h>
int main(char **args){
MYSQL_RES *result;
MYSQL_ROW row;
MYSQL *connection,mysql;
uint state;
cout << \Content-type:text/html\n\n\;
cout << \<br> MYSQL 테스트 페이지 입니다.!!<br><br>\;
mysql_init(&mysql);
connection=mysql_real_connect(&mysql,\,\********\,\********\,\********\,0,\/tmp/mysql.sock\,0);
if(connection == NULL){
cout << mysql_error(&mysql);
return 1;
}
state=mysql_query(connection,\select title,comment from freeboard\);
if(state!=0){
cout << mysql_error(&mysql);
return 1;
}
result=mysql_store_result(connection);
cout << \Rows : \ << mysql_num_rows(result) << \<br><br>\;
while((row=mysql_fetch_row(result)) != NULL){
cout << \ <b>title : \ << row[0] << \</b><br>comment\ << row[1] << \<br><hr size=1>\ ;
}
mysql_free_result(result);
mysql_close(connection);
cout << \<br><br>작업완료\ << endl;
return 0;
}
|