Q&A

  • DataBase 예외처리
안녕하십니까 ^.^

mdb를 ODBC로 연걸하여 사용하고 있습니다.



procedure TForm1.Button1Click(Sender: TObject);

begin

Q1.Insert;

...

Q1.Post;



try

Database1.ApplyUpdates([Query1]);

except

ShowMessage('갱신중 Error!!');

end;

end;



이런식으로 하니 시스템메세지가 나오고나서 ShowMessage('갱신중 Error!!') 이

실행됩니다. 시스템메세지를 없에는 방법을 알고 싶고요?



일반적인 Database예외 처리하는 방법을 알고싶습니다.

간단한 예제나 소스를 주시면 공부하는데 많은 보템이 되겠습니다.



절정고수님의 가르침 부탁합니다.

건강하십시오 꾸뻑~

2  COMMENTS
  • Profile
    이재식 1999.10.01 18:06
    박병영 wrote:

    > 안녕하십니까 ^.^

    > mdb를 ODBC로 연걸하여 사용하고 있습니다.

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > begin

    > Q1.Insert;

    > ...

    > Q1.Post;

    >

    > try

    > Database1.ApplyUpdates([Query1]);

    > except

    > ShowMessage('갱신중 Error!!');

    > end;

    > end;

    >

    > 이런식으로 하니 시스템메세지가 나오고나서 ShowMessage('갱신중 Error!!') 이

    > 실행됩니다. 시스템메세지를 없에는 방법을 알고 싶고요?

    >

    > 일반적인 Database예외 처리하는 방법을 알고싶습니다.

    > 간단한 예제나 소스를 주시면 공부하는데 많은 보템이 되겠습니다.

    >

    > 절정고수님의 가르침 부탁합니다.

    > 건강하십시오 꾸뻑~



    이재식 Wrote

    안녕하세요?

    매소드와 CachedUpdates명령이 충돌이 발생했습니다.

    위에서 보면 Post를 해주고나서, try밑에 ApplyUpdates를 하는데요,

    이건 잘못입니다.

    제 생각으론 의도가 CachedUpdates(true)를 쓰신것 같은데요,

    그렇다면, Post명령어를 제거하세요.

    그리고, Insert매소드를 사용하셨기때문에,

    에러가 난다면, '삽입중 에러'라고 해야 될 것 같은데요.



    시스템 메세지를 없앴다는것은 무슨 뜻인지?



    그리고, DataBase예외처리는 다른책들에도 많지만,

    정리가 아주 잘되었다고 생각되는 책이 있습니다.(제 생각)

    대림 출판사, '시작 그리고 완성'에 페이지 483-488를 보시면

    아마 어떻게 에러(서버 에러도 포함)를 처리하고 사용자가

    capture할 수 있는지 알 수 있을 것입니다.

    한 번 읽어 보세요. 정리가 잘 되어 있다고 생각되는데...

    그럼 즐거운 하루 되시길 바랍니다.

  • Profile
    박병영 1999.10.02 05:46
    이재식 wrote:

    > 박병영 wrote:

    > > 안녕하십니까 ^.^

    > > mdb를 ODBC로 연걸하여 사용하고 있습니다.

    > >

    > > procedure TForm1.Button1Click(Sender: TObject);

    > > begin

    > > Q1.Insert;

    > > ...

    > > Q1.Post;

    > >

    > > try

    > > Database1.ApplyUpdates([Query1]);

    > > except

    > > ShowMessage('갱신중 Error!!');

    > > end;

    > > end;

    > >

    > > 이런식으로 하니 시스템메세지가 나오고나서 ShowMessage('갱신중 Error!!') 이

    > > 실행됩니다. 시스템메세지를 없에는 방법을 알고 싶고요?

    > >

    > > 일반적인 Database예외 처리하는 방법을 알고싶습니다.

    > > 간단한 예제나 소스를 주시면 공부하는데 많은 보템이 되겠습니다.

    > >

    > > 절정고수님의 가르침 부탁합니다.

    > > 건강하십시오 꾸뻑~

    >

    > 이재식 Wrote

    > 안녕하세요?

    > 매소드와 CachedUpdates명령이 충돌이 발생했습니다.

    > 위에서 보면 Post를 해주고나서, try밑에 ApplyUpdates를 하는데요,

    > 이건 잘못입니다.

    > 제 생각으론 의도가 CachedUpdates(true)를 쓰신것 같은데요,

    > 그렇다면, Post명령어를 제거하세요.

    > 그리고, Insert매소드를 사용하셨기때문에,

    > 에러가 난다면, '삽입중 에러'라고 해야 될 것 같은데요.

    >

    > 시스템 메세지를 없앴다는것은 무슨 뜻인지?

    >

    > 그리고, DataBase예외처리는 다른책들에도 많지만,

    > 정리가 아주 잘되었다고 생각되는 책이 있습니다.(제 생각)

    > 대림 출판사, '시작 그리고 완성'에 페이지 483-488를 보시면

    > 아마 어떻게 에러(서버 에러도 포함)를 처리하고 사용자가

    > capture할 수 있는지 알 수 있을 것입니다.

    > 한 번 읽어 보세요. 정리가 잘 되어 있다고 생각되는데...

    > 그럼 즐거운 하루 되시길 바랍니다.



    안녕하십니까 이재식님 ^.^

    답변에 감사드립니다.

    시스템 메제지는 델파이에서(?) 뿌려주는 메세지거든요.

    일부러 기존에 있는 데이타를 다시 Insert하면은요



    Key Violation

    [Microsoft] [Microsoft ODBC Access 97 드라이브] 인데스,기본키 또는 관계에서

    중복된값이 있기 때문에 테이블에 요구된 변경사항이 General Sql Error.

    적용되지 않았습니다. 필드의 데이타 또는 중복 데이타가 있는 필드를 변경하거나

    인덱스를 삭제하거나 중복이 가능한 인덱스로 제정의

    하여 다시 시도하십시오.

    OK



    이런 메세지가 나온뒤에 ShowMessage('갱신중 Error!!') 이 실행됩니다.

    Tools/Debugger Options/Language Exception에서 Stop on Delphi Exception도

    Check를 해제하였습니다.

    다시 한번 가르침 부탁합니다.

    건강하십시오 꾸뻑~