mfc mysql 연동작업
mfc mysql 연동작업 하기.
mysql서비스 각 함수의 기능 정의.
-------------------------------------------------------------------------------------------
필수.
mysql_init(&Connect); // 연동을 위한 초기화
mysql_real_connect(&Connect, "localhost", DB_USER, DB_PASS, DB_NAME, 3306, (char*) NULL, 0)); //mysql과의 실질적인 연동
mysql_query(&Connect,"set names euckr"); // 쿼리를 보낸다.
좋은옵션
Sql_Result = mysql_store_result() // 쿼리 결과를 저장.
mysql_row = mysql_fetch_row(Sql_Result) // Sql_Result 에 값을 담아온다.
필요할때
mysql_errno(&Connect) //예외처리.(쿼리전송시 문법에러체킹시 유리)
mysql_fetch_array() // DB에서 가져온 값을 배열로 사용 할 수 있도록한다.
mysql_num_rows // 모든 레코드의 수
mysql_num_fields // 모든 필드의 수
-------------------------------------------------------------------------------------------
START
visual Studio 셋팅
1.프로젝트 속성 → C/C++ → 일반 -> 추가 포함 디렉토리
2. C:\Program Files\MySQL\MySQL Server 5.6\include; 추가 (해당 SQL버전에 맞게)
3. 프로젝트 속성 → 링커 → 입력 → 추가 종속성
4. C:\Program Files\MySQL\MySQL Server 5.6\lib\libmysql.lib;
입력해도되고 libmysql.lib/libmysql.dll 프로젝트폴더에 끌어다가 그냥 써도 무난하다.
---------------------------------------------------------------------------------------------
stdafx.h
1.모든 CPP파일에서 공용으로 사용 할 수 있도록 .
추가.
//MYSQL 관련헤더 ----------------------------------------------------------
#include <mysql.h>
#include <WinSock2.h>
#pragma comment(lib,"libmysql.lib")
#pragma comment(lib,"ws2_32.lib")
//----------------------------------------------------------------------------
//DB연결 초기화 관련헤더 ----------------------------------------------------
#define MY_IP "localhost"
#define DB_USER "root"
#define DB_PASS "123123"
#define DB_NAME "visitor"
//-----------------------------------------------------------------------------
extern MYSQL_ROW Sql_Row; // mysql 의 각행의 인덱스값들 불러온다.
extern MYSQL_RES *Sql_Result; // mysql의 결과
extern MYSQL Connect; // mysql의 연결을 담당
//-----------------------------------------------------------------------------
stdafx.CPP
//-------------------------------------------------------------------------------------------
MYSQL_ROW Sql_Row;
MYSQL_RES *Sql_Result;
MYSQL Connect;
//-------------------------------------------------------------------------------------------
CConnectMysql.CPP
//-----------------------------------------------------------------------------------------
//초기화&접속부
mysql_init(&Connect); //초기화
if(!mysql_real_connect(&Connect, "localhost", DB_USER, DB_PASS, DB_NAME, 3306, (char*) NULL, 0)) //연결
{
MessageBox(TEXT("DB 접속에 실패했습니다.\n응용 프로그램을 시작할 수 없습니다."), TEXT("접속 에러"), MB_OK);
TRACE("Connection error %d: %s\n", mysql_errno(&Connect), mysql_error(&Connect));
}
else
{
mysql_query(&Connect,"set names euckr"); //한글 인식
TRACE("DB 연결 성공");
}
//쿼리전송부분
CString query;
query.Format("select * from listvisit");
if(mysql_query(&Connect, query)) //예외처리해둬도 좋을듯.
{ // 쿼리 요청
TRACE("Connection error %d: %s\n", mysql_errno(&Connect), mysql_error(&Connect));
return;
}
if((Sql_Result = mysql_store_result(&Connect)) == NULL)
{
//쿼리저장
TRACE("Connection error %d: %s\n", mysql_errno(&Connect), mysql_error(&Connect));
return;
}
//쿼리 출력부분
while((Sql_Row = mysql_fetch_row(Sql_Result)) != NULL) //파일의 마지막까지
{
TRACE("mysql에 받은 값입니다 : 0:%s 1:%s 2:%s 3:%s 4:%s 5:%s 6:%s 7:%s 8:%s 9:%s 10:%s 11:%s 12%s \n", Sql_Row[0], Sql_Row[1], Sql_Row[2], Sql_Row[3],Sql_Row[4], Sql_Row[5], Sql_Row[6]
,Sql_Row[7], Sql_Row[8], Sql_Row[9], Sql_Row[10], Sql_Row[11], Sql_Row[12]);
}
//-----------------------------------------------------------------------------------------