1. 서버셋팅
우선 MySQL 서버를 하드에 깔아야 된다. 나는 어차피 아파치도 써야되기 때문에 APM설치 패키지 중에서 메모리 잡아먹는 비중이 제일 작은 AutoSet이라는 개인서버 솔루션(공짜다 ㅋㅋ)을 설치했다. 이놈은 윈도우 환경에서 아파치,MySQL,PHP를 통합으로 자동 설치해준다. 인스톨 이후 MySQL 서버 시작을 누르면 된다.
여기서 MySql 호스트명, 관리자 ID, 패스워드를 설정해 주기 바란다 이 정보를 통하여 나중에
MFC로 MySQL 서버로 접속할수 있다.
참고로 기본셋팅은 다국어지원 모드인 UTF-8방식이다 자체 메뉴에 있는 File->MYSQL 콘솔창 에서
한글내용 입력시 한글이 제대로 입력 되지 않으니 C:\AutoSet\Server\mysql\bin 을 환경변수 등록하여
시작-> 실행 -> cmd 를 입력하여 mysql -u root -p 엔터 실행후 암호를 입력하여 들어가서
한글을 입력할 것을 추천한다.
2. 라이브러리 셋팅
하지만 이거 가지고는 아직 부족하다. 라이브러리 파일을 깔아야 VC에서 MySQL을 다룰수 있다.
웃기는건 AutoSet을 깔아도 라이브러리 파일은 설치되지 않는다. 따라서 VC용 라이브러리를
http://www.mysql.com을 통해서 최신버전 MySQL이나 5.0 버전을 다운받아 필히!!! Custom 모드로
설치하기 바란다 다른모드로 설치 하였을 경우 MFC에서 필요한 라이브러리 파일이 설치 되지 않는다 ㅡ.ㅡ
위 그림처럼 Developer Components 만 설치하기 바란다 위의 오토셋에서 이미 MySQL을 설치했기
때문이다 ㅋㅋ 본인은 그냥 C:\Mysql\Developer에 설치하였다. 찾기 쉽게
설치하고 나면 C:\MySQL\Developer 폴더에 include폴더와 lib폴더가 있다. 이것을 VC에서 셋팅해
주어야 한다.
그리고 나서 lib\debug 에 있는 libmysql.dll파일을 윈도우폴더 system32에 복사해 주도록 한다.
3. VC 셋팅
이제 VC셋팅을 해보자 VC-> Tools->Option을 선택하고 다음 탭을 선택한 다음 다음과 같이 바꿔준다.
Tool-> Options -> Include Files
Mysql 설치경로에서 include 넣어 준다.
Tool-> Options -> Library files
Mysql 설치경로에서 lib\opt 추가
Mysql 설치경로에서 lib\debug 추가
이제 셋팅은 끝났다.
다음은 실제 연결이 됐는지 확인하는 소스내용을 알아보기로 하자.
4. MFC + MySQL 연동 소스
프로그램 다이얼로그 cpp 파일에 아래의 내용을 선언해 주도록 하자
--------------------------------------------------------
#include <winsock2.h> <--- 이거 대신 //#define SOCKET int 이걸써두 상관 없다. 순서는 지켜주길
바란다. 오류날 확률이 높다.
#include <mysql.h>
#pragma comment(lib, "libmysql.lib")
#pragma comment(lib, "ws2_32.lib")
#define MYSQL_HOST "localhost"
#define MYSQL_USER "사용자 계정"
#define MYSQL_PWD "계정 비밀번호"
#define MYSQL_DB "DB이름"
------------------------------------------------
연결 버튼을 눌렀을때 아래와 같은 소스를 입력해주면 DB가 성공적으로 입력 됐다고 나온다.
// MySql 접속
MYSQL mysql;
mysql_init(&mysql);
if (!mysql_real_connect(&mysql, MYSQL_HOST,MYSQL_USER,MYSQL_PWD,MYSQL_DB,3306,0,0))
{
AfxMessageBox(mysql_error(&mysql),MB_OK);
//return 0;
}
else
{
AfxMessageBox("DB 연결 성공",MB_OK);
mysql_close(&mysql);
//return 0;
}
만역 연결이 실패하였다면 왜 실패하였는지 그 오류 메세지를 메세지 박스로 출력한다.
4시간의 삽질 결과 겨우 연동 할수 있었다 -ㅅ- 생각보다 힘들었던거 같다.