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;
}