Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

FireDac Database 커넥션 자동 연결 복구 샘플 데모


Recommended Posts

FireDAC 의 TFDConnection 사용시 Database 서버에 연결이 된 상태에서 네트워크의 물리적 단절이나  Database 서버 다운등으로 인하여 연결이 끊어 졌다가 네트워크 상태가 복구 되고 난 후 TFDConnection 이 재 연결을 시도 이후 쿼리 작업 등을 자동으로 재 실행 할 수있게 하는 데모 입니다.

관련 내용의 상세 옵션과 설명은 아래 링크의 글에서 확인 가능 합니다.

* 데모 샘플 화면

image.png

샘플 프로젝트는 My-SQL 데이터베이스를 사용하였고 TFDConnection 과 TFDQuery TDatasource TDBGrid 를 사용하여 테이블의 데이터를 조회 하는 기본 방식 입니다.

변경해야 하는 옵션은 TFDConnection 에서 AutoReconnectTRUE 지정 하는 것 입니다.

버튼 클릭시   FDQuery1.Active := TRUE;  로 지정하여 미리 입력한 쿼리문을 실행하고 TFDConnection 의 커넥션은 TRUE 인 상태로 유지합니다.

TFDConnection 의 OnRecover OnRestored  이벤트 핸들러를 추가하여 소스와 같이 상태를 확인 할 수 있습니다.

image.png

procedure TForm8.BT_QueryActiveClick(Sender: TObject);
begin
  FDQuery1.Active := TRUE;
end;

procedure TForm8.BT_ClearClick(Sender: TObject);
begin
  FDQuery1.Active := FALSE;
end;


procedure TForm8.FDConnection1Recover(ASender, AInitiator: TObject; AException: Exception; var AAction: TFDPhysConnectionRecoverAction);
var
  iRes: Integer;
begin
   iRes := MessageDlg('연결이 끊겼습니다. 오프라인 - Yes, 다시 시도 - OK, 실패 - Cancel을 클릭하세요.',   mtConfirmation, [mbYes, mbOK, mbCancel], 0);

  case iRes of
    mrOk: AAction := faRetry;
    mrYes:    AAction := faOfflineAbort;
    mrCancel: AAction := faFail;
  end;
end;


procedure TForm8.FDConnection1Restored(Sender: TObject);
begin
   ShowMessage( '재 연결 되었습니다.' );
end;

 

물리적으로 연결을 단절 시켰다가 복구 하여 재연결 하면 연결 단절 상태에서 요청했던 쿼리가 바로 실행 되는 것을 볼 수 있습니다.

 

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.