1. MYSQL 설시시 아래 CIncdude Files /Lib Files 도 설치하도록 하자
2. MY SQL의 헤더파일 폴더과 라이브러리 폴더를 등록해준다.
3. MYSQL 홈피(http://dev.mysql.com)에 접속해서
downloads>connector > Connector 가서
Conector /C 부부관 Conector /C++를 받아서 설치한다.
이유는 MySQL의 함수 집합체인 DLL은 libmysql.dll 를 얻기위해서다.
4. 연동 코드
#define SOCKET int #include <string.h> #include <stdio.h> #include <mysql.h> #pragma comment(lib, "libmysql.lib") #pragma comment(lib, "ws2_32.lib") #define DB_HOST "127.0.0.1"//"호스트IP, 도메인또는localhost" #define DB_USER "root" #define DB_PASS "2513" #define DB_NAME "game" #define SQL_CREATE_TABLE "CREATE TABLE playerinfo(id INT AUTO_INCREMENT, name VARCHAR(30), xpos INT, PRIMARY KEY(id));" #define SQL_INSERT_RECORD "INSERT INTO playerinfo VALUES \ (NULL , %s, %d);" //" #define SQL_SELECT_RECORD "SELECT * FROM playerinfo" #define SQL_DROP_TABLE "DROP TABLE playerinfo" int main() { MYSQL *connection=NULL, conn; MYSQL_RES *sql_result; MYSQL_ROW sql_row; int query_stat; int i; char query[255]; mysql_init(&conn); // DB 연결 connection = mysql_real_connect(&conn, DB_HOST, DB_USER, DB_PASS,DB_NAME, 3306,(char *)NULL, 0); if(connection==NULL) { fprintf(stderr, "Mysql connection error : %s", mysql_error(&conn)); return 1; } // 테이블삭제 query_stat=mysql_query(connection,SQL_DROP_TABLE); if (query_stat != 0) { fprintf(stderr, "Mysql query error : %s", mysql_error(&conn)); // return 1; } //한글사용을위해추가. mysql_query(connection,"set session character_set_connection=euckr;"); mysql_query(connection,"set session character_set_results=euckr;"); mysql_query(connection,"set session character_set_client=euckr;"); //// 테이블생성 query_stat=mysql_query(connection,SQL_CREATE_TABLE); if (query_stat != 0) { cout<<"여기?"<<endl; fprintf(stderr, "Mysql query error : %s", mysql_error(&conn)); return 1; } // 레코드삽입 for(i=0;i<5;i++) { sprintf(query,SQL_INSERT_RECORD,"'ㅁㅁㅁ'",100+i); cout<<query<<endl; query_stat = mysql_query(connection, query); if (query_stat != 0) { cout<<"여기"<<endl; fprintf(stderr, "Mysql query error : %s", mysql_error(&conn)); return 1; } } // 셀렉트 query_stat=mysql_query(connection,SQL_SELECT_RECORD); if (query_stat != 0) { fprintf(stderr, "Mysql query error : %s", mysql_error(&conn)); return 1; } // 결과출력 sql_result=mysql_store_result(connection); while((sql_row=mysql_fetch_row(sql_result))!=NULL) { printf("%2s %2s %s\n",sql_row[0],sql_row[1],sql_row[2]); } mysql_free_result(sql_result); // 테이블삭제 query_stat=mysql_query(connection,SQL_DROP_TABLE); if (query_stat != 0) { fprintf(stderr, "Mysql query error : %s", mysql_error(&conn)); return 1; } // DB 연결닫기 mysql_close(connection); return 0; } |
여기서 중요한 한가지 C++로 DB로 정보를 보낼때 한글를 재대로 보내기 위해서는
//한글사용을위해추가.
mysql_query(connection,"set session character_set_connection=euckr;");
mysql_query(connection,"set session character_set_results=euckr;");
mysql_query(connection,"set session character_set_client=euckr;");
이부분을 추가해줘야한다.
하루 종일 한글 처리방법을 찾아서 구글링을 해댔는데, 여기에 와서
답글삭제방법을 찾았네요. 감사합니다..^^
MySQL Connector/C++ 버전에서는 아래와 같이 하면 되네요.
stmt = con->createStatement();
stmt->execute("set session character_set_connection=euckr;");
stmt->execute("set session character_set_results=euckr;");
stmt->execute("set session character_set_client=euckr;");