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
[74578] Re:ADO 프로그래밍에서 오류처리와 에러코드 얻는법이?
빌더(TWx) [builder] 3579 읽음    2017-09-20 03:37
왕초보와코드 님이 쓰신 글 :
:
: ADO로 DB에 접속해서 쿼리를 날리는 코드를 아래처럼 만들어 봤습니다.
:
: (2000년 초에 VB로 DB프로그램을 많이 만들어봤었는데, 근 15년이상 안쓰다 다시 만드니, 그리고 이젠 C빌더라 기억이 안나기도
:   하고 잘 모르겠네요)
:
: -----------------------------------------------------------
: bool TfrmDbManager::Execute_Query(AnsiString strQuery)
: {
:     AnsiString strConn = MakeConnectionStr(LOCAL_MDB_FILENAME);
:
:     try
:     {
:         ADOCommand1->ConnectionString = strConn;
:         ADOCommand1->CommandText = strQuery;
:         ADOCommand1->Execute(strQuery);
:         return true;    // 쿼리 성공
:     }
:     catch (...)
:     {
:         return false;     // 쿼리 실패
:     }
: }
: -----------------------------------------------------------
:
: 여기서 문제점이
: (1) 쿼리를 보냈는데, 여러 이유로 오류가 날 수 있습니다.
:       그래서 오류가 나면 처리하기 위해 try - catch 문으로 만들어 봤습니다만
:       오류가 나면 catch 문으로 가는것이 아니라 그냥 오류가 뜨고 프로그램이 멈추네요.
:       오류처리를 어떻게 하면 될까요?
:
: (2) 오류처리를 하려면 오류코드 번호를 받아야 하는데 (그리고 가능하다면 코드에 해당하는
:       오류 텍스트... 예를 들어 "존재하지 않는 Table입니다" 등등 을 얻어야 하는데
:       어떻게 하면 되는지 궁금합니다
:
:


답변:


catch()로 안들어 갈리가 없는데요.

try 블럭에 있지 않은 MakeConnectionStr() 에서 오류를 일으키거나.
F9 눌러서 디버깅 모드로 실행 시켰을 때, Break나 Continue 선택 창이
나오는 걸 갖고 프로그램이 멈춘다고 하는 건가요?

bool TfrmDbManager::Execute_Query(AnsiString strQuery)
{
    try {
        ADOCommand1->Execute();
    }
        catch (Exception &e)
        {
        Caption = e.ClassName() + " = " + e.Message;
    }
}

위와 같이...

커넥션 스트링을 주지 않은 상태에서
ADOCommand->Execute() 만 실행되게 해보세요.

Missing Connection or ConnectionString 이라는 메세지라도 던질 겁니다.

VCL은 에러코드를 리턴하는 식으로 구현되어 있지 않고, 거의 모든 에러를
예외로 던지도록 만들어져 있어요.

ADO VCL 라이브러리 코드도 마찬가지 입니다.

디버깅모드로 실행할 때 <Break/Continue> 선택창이 뜨는 상황을 프로그램이 멈추는
거라고 여긴다면...

Tools/Options/Debugger Options/Language Exception 으로 들어가서

'Notify on language exception' 체크박스를 해제해서 해보세요.



+ -

관련 글 리스트
74576 ADO 프로그래밍에서 오류처리와 에러코드 얻는법이? 왕초보와코드 3188 2017/09/19
74578     Re:ADO 프로그래밍에서 오류처리와 에러코드 얻는법이? 빌더(TWx) 3579 2017/09/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.