|
질문 요지:
MS Windows 운영체게 상에서 ODBC를 통해 MS Access, MYSQL Database에 갱신 질의(insert into)를 행할 때 한글처리 문제.
아래와 같은 함수가 있을 때 AddNewMember("member1","someone");
하면 아무런 문제 없이 DB에 입력됩니다.
하지만 AddNewMember("회원1","아무개"); 하면 Test DB의 member 테이블의
id와 name 필드에 모두 #이 입력되고 맙니다.
즉, 한글처리가 제대로 되지 않았다는 의미지요.
제가 여러가지로 테스트해본 결과 TTable을 사용하면 한글 문제를 일부 해결할 수 있더군요.
그 해결책이란 TTable의 SetData 함수를 사용하여
Table1->FieldByName("id")->SetData((void*)id.Trim().c_str(),true); 와 같이 하는 것이지요.
하지만 그 경우 모든 레코드들을 가져다 놓고 작업해야 하므로 로드가 많이 걸릴 수 밖에 없는
심각한 문제가 발생하므로 곤란합니다.
그렇다면 결과집합이 없고 또 사용할 필요가 없는 갱신 질의의 경우 어떻게 해야 한글을 제대로 입력시킬 수 있을까요?
참고로 Access나 MySQL 모두 전용 클라이언트 상에서 직접 레코드를 입력하면 한글이 문제 없이 입력됩니다.
예를 들어, MySQL의 경우 콘솔 창에서 mysql에 로그인한 후 키보드를 통하여
insert into member1 (id,name) values('회원1','하무개'); 하면 제대로 입력이 됩니다.
고수님들의 한 수 지도를 부탁드립니다.
bool AddNewMember(String id, String name)
{
if(id=="" || name=="") return false;
try{
TQuery *query = new TQuery(Application);
query->Active=false;
query->DatabaseName="Test";
query->SQL->Clear();
String strQuery;
strQuery = "insert into member (id,name)");
strQuery = strQuery + " values (\'" + id + "\',\'" + name + "\')";
query->SQL->Add(strQuery);
query->ExecSQL();
delete query;
}catch(...){
return false;
}
return true;
}
|