ADOQuery TimeOut с попыткой, кроме - PullRequest
0 голосов
/ 21 сентября 2019

У меня есть ADOQuery и ADOConnection на форме, упрощенный код выглядит так:

на Form.Create Iпросто задайте ADOConnection параметры подключения и убедитесь, что оно закрыто.После этого я никогда не открываю ADOConnection напрямую, это происходит только через ADOQuery.

try
 if ADOQuery.Active then ADOQuery.Close;
 ADOQuery.Open;
except
 Application.Terminate;
end;

Я бы ожидал, что этот код будет перехватывать всевозможные исключения (, например, ADOQuery Timeout ) и просто завершитсяприложение.

Каким-то образом я все еще получаю Превышено время ожидания запроса.( Но, возможно, это происходит от самого ADOConnection? ) Я не уверен на 100%.

Если бы я сделал это так, это решило бы проблему:

try
 if ADOConnection.Connected:=true then ADOConnection.Close;

 if ADOQuery.Active then ADOQuery.Close;
 ADOQuery.Open;
except
 Application.Terminate;
end;

Спасибо.

ОБНОВЛЕНИЕ

Вопрос заключается в следующем:

это не время ожидания Catching Query, потому что используемый AdoConnection не находится внутрипопробуй кроме блока?(На самом деле я не вижу никакой другой причины)

В этом примере ниже ADOConnection1 подключается к первому ADOQuery.Open и остается таким до тех пор, пока программное обеспечение не будет завершено.

try
 if ADOQuery.Active then ADOQuery.Close;
 ADOQuery.Open;
except
 Application.Terminate;
end;

Это, за исключением, похоже, не перехватывает все тайм-ауты запроса ...

1 Ответ

0 голосов
/ 22 сентября 2019

Вы используете форму, на которой эти компоненты размещены справа.

Поэтому проверьте, является ли свойство Connected для TADOConnection равным true в IDE ...

Теперь убедитесь, что это ВСЕГДА false, потому что при создании формы это свойство будет «активировать / открывать» соединение до того, как событие OnCreate будет запущено.

...