Q&A

  • zeos 에서 DB접속시 에러메시지 처리 방법
델파이를 시작한지 3일 지난 완전 초보 입니다 .

zeos 컴포넌트를 사용해서 DB 접속기를 만들어 보았는데요,
일단 접속은 잘 되는데, 문제는 DB접속 아이디와, 패스워드를
입력 하지 않았을때 디버깅을 하면 ZDbcMySqlUtils 유닛의
CheckMySQLError 프로시저 에서 예외처리 부분 에서 처리해주는 에러 메시지 박스가 뜨게되던데, 그 에러메시지가 실행파일에서는 안뜨더군요.

제가 필요한 것을 디비 접속시 에러가 나면 제가 만든 예외처리 부분에서 메시지 박스로 해당 에러메시를 표시 하고 싶습니다. 완전 초보라 어떻게 해야할지 잘 모르겠습니다. 고수님 들의 많은 조언 부탁 드리겠습니다.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ZConnection, ZSqlProcessor, ZDbcMySqlUtils, ExtCtrls;

type
  TForm1 = class(TForm)
    ZConnection1: TZConnection;
    pnlConn: TPanel;
    Button1: TButton;
    edtIP: TEdit;
    edtID: TEdit;
    edtPS: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    btnDisconn: TButton;
    procedure Button1Click(Sender: TObject);
    procedure btnDisconnClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  ZConnection1.User := edtID.Text;
  ZConnection1.Password := edtps.Text;
  ZConnection1.Database := 'messenger';
  ZConnection1.HostName := edtip.Text;

  try
    ZConnection1.Connect;
    //ShowMessage('접속성공');
    pnlConn.Visible := false;  //사라지게 하는 속성
    btnDisconn.Visible := true;


  except
    ZConnection1.Disconnect;      //예외처리 어떻게??
    ShowMessage('접속실패');
//이 부분에서 unit ZDbcMySqlUtils 의  CheckMySQLError 프로시저의 에러메시지를 출력 하고 싶습니다.
  end;

end;

procedure TForm1.btnDisconnClick(Sender: TObject);
begin
  ZConnection1.Disconnect;
  btnDisconn.Visible := false;
  pnlConn.Visible := true;
end;

end.


----------------------------------------------------------------
아래는 ZDbcMySqlUtils 의 CheckMySQLError 프로시저 부분 입니다.
----------------------------------------------------------------

procedure CheckMySQLError(PlainDriver: IZMySQLPlainDriver;
  Handle: PZMySQLConnect);
var
  ErrorMessage: string;
  ErrorCode: Integer;
begin
  ErrorMessage := Trim(StrPas(PlainDriver.GetLastError(Handle)));
  ErrorCode := PlainDriver.GetLastErrorCode(Handle);
  if (ErrorCode <> 0) and (ErrorMessage <> '') then
  begin
    raise EZSQLException.CreateWithCode(ErrorCode,
      Format('SQL Error: %s', [ErrorMessage]));
  end;
end;


제가 완전초보라 쉬운 설명을 해주셨으면 감사하겠습니다.^^;
0  COMMENTS