0

DB アプリ (MyDac コンポーネントと MySql サーバーを使用) を作成していますが、あなたの助けが必要です。状況を想像してください: 1. アプリケーションの開始 - 接続が存在し、すべて問題ありません。2. その後、MySql サーバーがクラッシュするか、接続の問題が発生します。 3. ユーザーが DB からデータを選択しようとしています。アプリケーションが無限ループに陥る (接続を確立しようとしている)

どうすればいいのかわからない。クエリをスレッドに入れるといいと思います。このスレッド用に別の接続を作成する必要があることは既に知っています。スレッドの操作に関する経験が不足しているため、これを行うことはできません。例を書いたり、アドバイスをいただければ幸いです。私はあなたの助けを願っています、ありがとう

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 はサーバーへの再接続を 2 回試行し、失敗した場合は例外を生成します。

于 2013-10-31T08:30:38.743 に答える