글
C API 를 사용해서 UNICODE 데이터를 DB에 넣고싶습니다. (가져온 데이터를 utf8 에서 현재 사용하는 콘솔의 문자셋으로 변환) 하는것 까지 해결했습니다. 서버로 전송됩니다. int _tmain(int argc, _TCHAR* argv[]) if(!mysql_real_connect(&mysql, "localhost", "user1", "password", "test", 3306, (char*)NULL, 0)) if(mysql_query(&mysql, "set names utf8")) //int queryResult = mysql_query(&mysql, "INSERT INTO unicodetable(name) values('ab한글efg') "); if( queryResult == 0 ) mysql_close(&mysql);
DB는 MySQL 4.1.26 이고 디폴트 문자셋을 utf8 로 세팅했습니다.
웹 -> DB -> 웹 으로 utf8 로 된 데이터가 잘 등록되거 읽어지는것을 확인했습니다.
그리고 DB -> App 로 utf8 데이터를 잘 가져와서 콘솔화면에 잘 표시
이제 남은것은 유니코드 데이터를 DB에 저장시키는 것입니다.
전세계 수많은 클라이언트에서 그들만의 문자셋으로 로그가 생성되며 그것을 다시 Unicode 로 변환해서
서버에서는 받은 Unicode 로 된 데이터를 MySQL DB에 기록해야하는데 그 방법을 모르겠습니다.
int queryResult = mysql_query(&mysql, "INSERT INTO unicodetable(name) values('ab한글efg') ");
같은 코드는 제대로 입력도 안됩니다.
그렇다고
int queryResult = mysql_query(&mysql, L"INSERT INTO unicodetable(name) values('ab한글efg') ");
이렇게하면 mysql_query 함수의 인자 타입이 맞지 않습니다.
도저히 답이 안나옵니다. 어떻게 DB에 데이터를 넣을 수 있을까요?
일단 데이터를 무사히 가져오는 부분을 올립니다.
{
MYSQL mysql;
MYSQL_RES* res;
MYSQL_ROW row;
mysql_init(&mysql);
{
//error
return 0;
}
{
//error
mysql_close(&mysql);
return 0;
}
int queryResult = mysql_query(&mysql, "select * from unicodetable");
{
//error
}
//query_stat = mysql_query(connection, query);
//if (query_stat != 0)
char buf[256];
res = mysql_store_result(&mysql);
int fields =mysql_field_count(&mysql);
if( res )
{
while((row=mysql_fetch_row(res)))
{
for(int cnt=0;cnt {
UTF8Decode(row[cnt], buf, sizeof(buf));
printf("%s ", buf);
}
printf("\n");
}
}
mysql_free_result(res);
}
'MySQL' 카테고리의 다른 글
C 와 MySQL 의 연동 (0) | 2006.11.20 |
---|---|
MySQL C-API Example (0) | 2006.11.20 |
MySQL C API 설명 (0) | 2006.11.19 |
MySQL For C API (0) | 2006.11.19 |
Mysql C API를 이용한 초간단 회원 관리 (0) | 2006.11.19 |
RECENT COMMENT