您应该使用单个tadoConnection对象来避免为每个组件设置连接字符串。保持连接对象关闭,并在需要访问数据时打开它。像这样:
procedure OnTimer;
begin
MyAdoConnection.Open;
try
// Data access code here
...
finally
MyAdoConnection.Close;
end;
end;
你可以另外加一个
try/except
绕过
MyAdoConnection.Open
捕捉网络不可用的情况。
关于问题的第二部分,最好是将所有数据访问组件放在数据模块中,在需要运行数据访问过程时创建这些模块。然后,您可以将所有数据访问代码放在该数据模块中,并将其与其他代码分开。
您可以尝试在DataModule的onCreate事件中打开连接,但在打开连接时要小心处理可能的异常。OnDestroy事件中关闭连接。然后您可以像这样使用数据模块:
procedure OnTimer;
var myDataModule : TMyDataModule;
begin
myDataModule := TMyDataModule.Create;
try
// Data access code here
myDataModule.DoSomeDatabaseWork;
finally
myDataModule.Free;
end;
end;