0

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

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

4

1 回答 1

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 会尝试重新连接服务器两次,如果失败会产生异常。

于 2013-10-31T08:30:38.743 回答