我正在编写数据库应用程序(使用 MyDac 组件和 MySql 服务器),我需要你的帮助。想象一种情况: 1. 应用程序启动 - 连接存在,一切正常。2. 然后 MySql 服务器崩溃或只是连接问题 3. 用户试图从 DB BOOM 中选择一些数据!应用程序进入无限循环(正在尝试建立连接)
我不知道该怎么办。我认为将查询放在一个线程中会很好。我已经知道我必须为此线程创建一个单独的连接。由于缺乏使用线程的经验,我无法做到这一点。如果你写一个例子或给我一个建议,那就太好了。我希望你的帮助,谢谢
我正在编写数据库应用程序(使用 MyDac 组件和 MySql 服务器),我需要你的帮助。想象一种情况: 1. 应用程序启动 - 连接存在,一切正常。2. 然后 MySql 服务器崩溃或只是连接问题 3. 用户试图从 DB BOOM 中选择一些数据!应用程序进入无限循环(正在尝试建立连接)
我不知道该怎么办。我认为将查询放在一个线程中会很好。我已经知道我必须为此线程创建一个单独的连接。由于缺乏使用线程的经验,我无法做到这一点。如果你写一个例子或给我一个建议,那就太好了。我希望你的帮助,谢谢
为避免无限次尝试重新连接到服务器,您可以使用计数器变量。例如,您可以使用以下代码:
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 会尝试重新连接服务器两次,如果失败会产生异常。