블로그 > 헤즐넛 - 더욱 강렬하게 http://blog.naver.com/designfull/120000669782 | |||||||||||||||||||||||||||||||
자료출처 : http://ngps.net/ngpiki/index.php?display=MySqlForCApi 간단하게나마 DB에서 가장 많이 사용되는 ( 게임용 DB 로도 가장 많이 사용 되는 ) MySQL For C API 에 대해서 알아 보고 최후로 DB 접근을 하기 위한 종단 서버 구성으로 마쳐 볼까 합니다 :) 이것 역시 언제 끝날지는 알 수 없습니다 시간 날 때마다 하겠습니다. 개인적으로 sql query문이 제가 약한 관계로 :) 제대로 된 글이 될 거라는 생각은 안 합니다. 휴 정말 간만에 들어오네요 :) 제가 너무 정신이 없어서 ( 논다고 바빳습니다. 기다리는 분은 전혀 없었겠지만 ) 2번에 나놔서 정리 할까 합니다. 첫번째로는 함수 나열과 정리를 하고 두번째는 실전 소스로 나눠서 정리할까 합니다. 실제 많은 api함수들이 있지만 자주 사용하는 것 몇가지만 알아보겠습니다. 아.. VS6에서는 컴파일을 위해서는 MYSQL/INCLUDE 폴더를 포함시켜 주시고 libmysql.lib를 포함 시키지 않으면 반가운 링크에러들이 뜰겁니다. 리눅스에서는 make 파일에 여러가지를 추가 시켜야겠죠. 정확한 include 파일 경로를 찾으려면, # find / -name mysql.h 정확한 공유 라이브러리 파일 경로를 찾으려면, # find / -name libmysqlclient.so 하시면 됩니다.
와 같이 하면 컴파일에 문제가 없을겁니다. 컴파일 얘기는 다음에 한번더 자세하게 makefile과 함께 하고 오늘은 자주 사용하는 함수만 정리 하겠습니다.
이제는 저 위에 함수들을 어떻게 사용 하는가에 대해서 간단한 예문을 통해서 알아 볼까 합니다. 지금 위키에서 바로 코딩을 하는 관계로 컴파일이 안됄수도 있습니다 (__) 그냥 어떻게 사용하는가만 알아 보자는 겁니다. 쿨럭;; #define dDB_HOST "아이피"#define dDB_PORT 3306#define dDB_ID "아이디"#define dDB_PW "db 패스워드"#define dDB_NAME "DB 명 "#include <mysql.h>MYSQL* mysql;MYSQL *DBConnect( char * host , int port , char *id , char *pw , char *dbName ){ MYSQL *db = NULL; db = mysql_init( (MYSQL*)NULL ); // 초기화 함수 if( db ) { if( mysql_real_connect( db, host, id, pw, NULL, port, (char*)NULL, 0 ) ) // DB 접속 { if( mysql_select_db( db, dbName ) != 0 ) // DB 선택 { mysql_close( db ); return NULL; } } else // connect error { printf( "Error %d ( %s )\n", mysql_errno( db ), mysql_error( db ) ); mysql_close( db ); return NULL; } } else return NULL; return db;}int main(){ mysql = DBConnect( dDB_HOST , dDB_PORT, dDB_ID , dDB_PW, dDB_DBNAME ); if( ! mysql ) { return -1 ; } char Query[128]; sprintf( Query," select ......등등 필요한 쿼리들" ); if( !mysql_query ( mysql, Query) ) { MYSQL_RES *result = mysql_store_result( mysql ); if( result ) { MYSQL_ROW row; row = mysql_fetch_row( result ); // 그리고 각 원하는 것들을 여기에다가 변수에 저장 한다. // id = atoi ( row[0] ) ; 이런 식으로 ... } mysql_free_result( result ); } mysql_close( mysql ); return 0;} 정말 간만에 수정 하는 군요 -_-+ 몇마디 더 추가 하고자 이렇게 글을 올리게 됐네요
이런식으로적으면 컴파일이 돼겠습니다요 이렇게 하면 mysql 이라는 게 생기겠죠 뭐 더 확실하게 알아 보고자 하면 연결 완료 나 종료에 대해서 printf 문등을 통해서 알아보던지 아니면 로그파일로 남기셔도 될듯하고요 여기서 주의 할점은 Mysql For C API를 사용할때는 -lmysqlclient 이 녀석입니다. 라이브러리를 연결 하는 녀석이죠 libmysqlclient.so 를 찾아서 링크 시켜 주는 역할을 합니다. 자 여기서 C API 의 자료형에 대해서 몇가지 알아 보겠습니다.
(에러 문구는 mysql for C API 문서에서 발견을 했는데 출처를 모르겠군요 ) 이번에는 Mysql For C API 를 이용하면서 나올 에러들에 대해서 대처해보기 위해서 에러에 대해서 알아 보겠습니다. 1) "msyql.c:2: mysql.h: 그런 파일이나 디렉토리가 없음"
2) "mysql.o(.text+0x11): undefined reference to `mysql_init'"
3) "ld: cannot open -lmysqlclient: 그런 파일이나 디렉토리가 없음"
4) "Can't connect to local MySQL server " 5) "Access denied for user: 'root@localhost' (Using password: YES)"
6) "./sql: error in loading shared libraries libmysqlclient.so.6: cannot open shared object file: No such file or directory" |
0