У меня есть приложение, которое подключается к базе данных MySql с помощью объекта TAdoConnection от Delphi.Это очень требовательное приложение.Поэтому я создаю соединение и держу его открытым, чтобы избежать больших затрат ресурсов на открытие / закрытие соединений с базой данных.Но, очевидно, могут возникнуть проблемы (перезапуск базы данных, сбой сетевого подключения и т. Д.).Поэтому я встроил код для освобождения объекта базы данных, его воссоздания и повторного подключения при сбое запросов.
У меня есть общая функция для подключения к базе данных.Соответствующий код таков:
try
AdoConnection.open;
result := Adoconnection.Connected
except
result := False;
......
end;
Я провел некоторый тест, включив и выключив базу данных MySql.Все работает нормально, если при запуске приложения база данных отключена (т.е. она правильно выдает исключение).Однако, если я отключаю базу данных после того, как приложение уже успешно подключилось, последующие повторные подключения не выдают исключений, и, кроме того, отчет falsley true для AdoConnection.Connected .Я уверен, что объект подключения был сначала освобожден / воссоздан.
Похоже, здесь происходит какой-то механизм кэширования (скорее всего, на уровне аппаратного обеспечения / драйверов, а не на уровне приложений).У кого-нибудь есть идеи?