Visual C++과 mysql 데이터 베이스 연동 방법 정리
**. 용어
dynaset : DB 값이 동적 연결되어 즉시 변경됨.(rollback 미지원)
snapshot : DB 값 변경시 다시 적용해야함. (commit, rollback 지원)
**. DB 샘플 정보
DSN 이름 : mysqld
database : test
UID/PWD : root/root
drop table TEST;
create table TEST
(
t_str varchar(10),
t_blob blob
); insert into TEST values ('hi~`, 'hi man~~~~'); |
ODBC
OLEDB
mysql 지원 하지 않음.
타 DB(mssql, MS Access)의 경우는 project 생성시 선택
혹은 Class View 에서 Add > Class 메뉴로 "ATL > ATL OLEDB Consumer" 로 작성 가능
ADO
DAO
dynaset 지원.
개인용 DB처럼 가벼운 경우 적하며 MFC의 CDaoDatabase(deprecated) 사용
[mysql 관련 주의 사항]
**. 주의 1 - ODBC 버그
mysql.com 에서 최신 버전인 Connector/ODBC 5.1.7 를 설치했더니 버그 때문에 DSN이 정상적이지 않다.
이전 버전인 Connector/ODBC 3.51.27 설치 해야 한다.
(나의 환경은 Windows XP service pack2, mysql 5.1 (character set utf8)
mysql.com 에서 최신 버전인 Connector/ODBC 5.1.7 를 설치했더니 버그 때문에 DSN이 정상적이지 않다.
이전 버전인 Connector/ODBC 3.51.27 설치 해야 한다.
(나의 환경은 Windows XP service pack2, mysql 5.1 (character set utf8)
**. 주의 2 - 영문 꺠지는 현상
mysql에서 데이터를 가져올 때 영문이 깨진다.
유니 코드를 위해서 바인딩 할때 (SQLBindCol 함수) SQL_C_CHAR 대신 SQL_C_TCHAR를 써야 한다.
TCHAR 처럼 T가 붙은 자료형을 제공한다.
mysql에서 데이터를 가져올 때 영문이 깨진다.
유니 코드를 위해서 바인딩 할때 (SQLBindCol 함수) SQL_C_CHAR 대신 SQL_C_TCHAR를 써야 한다.
TCHAR 처럼 T가 붙은 자료형을 제공한다.
**. 주의 3 - 한글 꺠지는 현상
이젠 한글만 깨진다. (mysql 5.1, character set utf8)
solution 1. DSN 설정 > Connect Options > Character Set 을 utf8로 설정한다.
solution 2. 소스에서 "set names euckr"를 한번 mysql에 쏴주면 되긴 한다.
cmd에서 mysql에 접속하여 볼때도 마찬가지로 "set names euckr"을 해줘야 깨지지 않고 잘 나온다.
이젠 한글만 깨진다. (mysql 5.1, character set utf8)
solution 1. DSN 설정 > Connect Options > Character Set 을 utf8로 설정한다.
solution 2. 소스에서 "set names euckr"를 한번 mysql에 쏴주면 되긴 한다.
if (SQLExecDirect(hStmt, (SQLTCHAR*)_T("set names euckr"), SQL_NTS) != SQL_SUCCESS)
{
print(_T("SQLAllocHandle stmt error"));
}
cmd에서 mysql에 접속하여 볼때도 마찬가지로 "set names euckr"을 해줘야 깨지지 않고 잘 나온다.
(일본어도 잘 나온다)
참고로 mysql의 데이터 문제라고 생각되어질때 MySQL Workbench로 접속하여 편하게 확인 할 수 있다.
참고로 mysql의 데이터 문제라고 생각되어질때 MySQL Workbench로 접속하여 편하게 확인 할 수 있다.
**. 주의 4 - mysql 재설치시 응답 없음 현상
"Write Configuration file" 단계에서 응답 없음 현상.
solution.
프로그램 설치 삭제
설치 디렉토리 삭제
"C:\Documents and Settings\All Users\Application Data\MySQL" 삭제
재설치 재시도.
'C++' 카테고리의 다른 글
DLL (Dynamic Link Library) (0) | 2010.10.27 |
---|---|
mysql connector/c++ (1) | 2010.10.26 |
ODBC (open database connectivity) (1) | 2010.10.25 |
현재 위치 __FILE__, __LINE__, __FUNCTION__ (0) | 2010.10.23 |
struct padding (구조체 패딩) 문제 (0) | 2010.10.21 |
UDP (User Datagram Protocol) (0) | 2010.10.19 |
TCP (Transmission Control Protocol) (2) | 2010.10.19 |
Overlapped Model (0) | 2010.10.19 |