1. Visual Studio와 MySQL 연동 설정 |
1) Visual Studio와 MySQL은 둘다 64비트로 혹은 둘다 32비트로 맞춰줘야 함
2) Visual Studio의 프로젝트 속성으로 들어가기
3) Visual Studio 프로젝트 속성에서 아래의 값 3개 추가(설치 경로로 가서 include와 lib 위치 확인 후 사용)
- VC++ 디렉터리 -> 일반 -> 포함 디렉터리 : C:\Program Files\MySQL\MySQL Server 8.0\include 추가
- VC++ 디렉터리 -> 일반 -> 라이브러리 디렉터리 : C:\Program Files\MySQL\MySQL Server 8.0\lib 추가
- 링커 -> 입력 -> 추가종속성 : libmysql.lib 추가
4) dll 복사해주기
- 위의 3번항목에서 찾았던 lib 폴더로 가서 libmysql.dll 파일 복사 후 cpp파일이 있는곳으로 붙여넣기
※ 프로젝트 우클릭해서 폴더열기 하면 바로 찾아가기 편함
5) 설정 잘 했는지 확인해보기
- 아래의 코드를 작성해보고 결과로 MySQL버전이 잘 나온다면 연결 잘 된 것
#include <iostream>
#include <mysql.h>
int main()
{
std::cout << mysql_get_client_info() << '\n';
return 0;
}
2. C++에서 Query문 사용 |
#include <mysql.h>
#include <iostream>
int main()
{
MYSQL Conn; // MySQL 정보를 담을 구조체
MYSQL* ConnPtr = NULL; // MySQL 핸들
MYSQL_RES* Result; // 쿼리성공시 결과를 담는 구조체 포인터
MYSQL_ROW Row; // 쿼리성공시 결과로 나온 행의 정보를 담는 구조체
int Stat; // 쿼리요청 후 결과(성공, 실패)
mysql_init(&Conn); // MySQL 정보 초기화
// 데이터베이스와 연결
// ConnPtr = mysql_real_connect(&Conn, "데이터베이스서버주소", "root", "비밀번호", "접속할데이터베이스", 3306, (char*)NULL, 0);
ConnPtr = mysql_real_connect(&Conn, "127.0.0.1", "root", " ", "mydatabase", 3306, (char*)NULL, 0);
if (ConnPtr == NULL) // 연결 결과 확인, NULL일 경우 연결 실패한 것
{
fprintf(stderr, "MySQL connection error : %s\n", mysql_error(&Conn));
return 1;
}
// 데이터베이스에 한글이 있다면 아래 3줄 추가
// MySQL에서 사용하는 문자셋을 VS가 사용하는 문자셋인 euc-kr로 변경해주는 기능
mysql_query(ConnPtr, "set session character_set_connection=euckr;");
mysql_query(ConnPtr, "set session character_set_results=euckr;");
mysql_query(ConnPtr, "set session character_set_client=euckr;");
char* Query = (char*)"SELECT * FROM people"; // 세미콜론을 제외한 쿼리문 작성
Stat = mysql_query(ConnPtr, Query); // 쿼리 요청 및 성공여부 받아오기
if (Stat != 0)
{
fprintf(stderr, "MySQL query error : %s\n", mysql_error(&Conn));
return 1;
}
Result = mysql_store_result(ConnPtr); // 결과 확인하기
while ((Row = mysql_fetch_row(Result)) != NULL) // 결과 출력하기
{
std::cout << Row[0] << ' ' << Row[1] << ' ' << Row[2] << ' ' << Row[3] << ' ' << Row[4] << '\n';
}
mysql_free_result(Result); // 결과 비우기
// 데이터베이스와 연결해제
mysql_close(ConnPtr);
return 0;
}