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