C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[15423] Re:[질문] 데이터베이스 테이블에 한글 입력 문제.
김상구.패패루 [peperu] 1240 읽음    2002-02-08 22:24
글쎄요.. 별 이상 없어 보이는데요..

그런데 DB접근을 ODBC를 거쳐서 BDE로 연결하는 것은 효율성이 많이 떨어져 보이네요..
저는 주로 ADO로 연결해서 하는데.. ADO로 하는 경우 다음과 같이 보통 처리하며 아무 문제 없습니다.

메인폼 등에 TADOConnection이 cncMain이라는 이름으로 들어있고, 프라퍼티 설정이 모두 되어 있다면..

bool TForm1::AddNewMember(const String& asID, const String& asName)
{
  if (asID.IsEmpty() || asName.IsEmpty()) return false;

  bool lRetVal = true;
  TADOQuery* pInsQry = new TADOQuery(this);

  pInsQry->Connection = cncMain;
  pInsQry->SQL->Text = "INSERT INTO [member] ([id], [name])"
                 "       VALUES (\""+asID+"\",\""+asName+"\")";
  try {
    pInsQry->ExecSQL()
  } catch (...) {
    lRetVal = false;
  }
  delete pInsQry;
  return lRetVal;
}

한국어 뿐만 아니라 일본어, 중국어도 문제 없이 잘 되는데요..
쩝...
혹시나 몰라서 []를 사용했습니다. MS Access나 MS SQL의 경우 특정 키워드가 문제 되는 경우가 있거든요. no같은 것들이 아주 대표적이죠..
님의 코딩스타일이 그런 위험이 좀 있어 보여서 일부러 제 스타일로 다시 써 봤습니다.
(저는 보통 함수 인자는 a나 r이나 m을 앞에 붙입니다. a는 argument, r은 return, m은 multyrole의 의미로.. 로컬변수는 변수 타입을 앞에 붙이구요.. l은 logical, s는 String 등등..)




임문환 님이 쓰신 글 :
:
: 질문 요지:
: 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;

: }
:
:

+ -

관련 글 리스트
15405 [질문] 데이터베이스 테이블에 한글 입력 문제. 임문환 1189 2002/02/08
29871     Re:[질문] 데이터베이스 테이블에 한글 입력 문제. 김상구.패패루 790 2002/02/08
15423     Re:[질문] 데이터베이스 테이블에 한글 입력 문제. 김상구.패패루 1240 2002/02/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.