Вы должны использовать один объект TAdoConnection, чтобы избежать установки строки подключения для каждого компонента. Держите объект подключения закрытым и открывайте его, когда вам нужен доступ к данным. Примерно так:
procedure OnTimer;
begin
MyAdoConnection.Open;
try
// Data access code here
...
finally
MyAdoConnection.Close;
end;
end;
Вы можете дополнительно поместить try/except
блок вокруг MyAdoConnection.Open
, чтобы поймать ситуацию, когда сеть недоступна.
Что касается второй части вашего вопроса, лучше всего было бы поместить все ваши компоненты доступа к данным в модуль данных, который вы создадите, когда вам нужно будет выполнить процедуры доступа к данным. Затем вы можете поместить весь свой код доступа к данным в этот модуль данных и отделить его от остальной части кода.
Вы можете попытаться открыть соединение в событии OnCreate модуля данных, но будьте осторожны при обработке возможных исключений при открытии соединения. Закрыть соединение в событии OnDestroy. Затем вы можете использовать этот модуль данных следующим образом:
procedure OnTimer;
var myDataModule : TMyDataModule;
begin
myDataModule := TMyDataModule.Create;
try
// Data access code here
myDataModule.DoSomeDatabaseWork;
finally
myDataModule.Free;
end;
end;