MySql Connection丢失了Delphi

时间:2013-10-29 21:21:46

标签: mysql multithreading delphi

我正在编写数据库应用程序(使用MyDac Component和MySql服务器),我需要你的帮助。想象一下情况: 1.应用程序启动 - 连接存在,一切正常。 2.然后MySql服务器崩溃或只是发生连接问题 3.用户正在尝试从DB中选择一些数据 繁荣!应用程序进入无限循环(正在尝试建立连接)

我不知道该怎么办。我把查询放在一个线程中会很好。我已经知道我必须为这个Thread创建一个单独的连接。由于缺乏使用线程的经验,我无法做到这一点。如果你写一个例子或给我一个建议,那将是很棒的。我希望得到你的帮助,谢谢你

1 个答案:

答案 0 :(得分:0)

为避免重新连接到服务器的无限尝试,您可以使用计数器变量。例如,您可以使用以下代码:


var
  RetryCount: Integer;

procedure TMainForm.MyConnection1ConnectionLost(Sender: TObject;
  Component: TComponent; ConnLostCause: TConnLostCause;
  var RetryMode: TRetryMode);
begin
  if RetryCount < 2 then begin
    Inc(RetryCount);
    RetryMode := rmReconnectExecute;
  end
  else begin
    RetryCount := 0;
    RetryMode := rmRaise;
  end;
end;

在这种情况下,MyDAC将尝试重新连接到服务器两次,如果失败将产生异常。