-1

我在表单上有一个ADOQuery和一个ADOConnection,简化的代码如下所示:

Form.Create上,我只是给 ADOConnection 连接参数并确保它已关闭。在此之后,我从不直接打开 ADOConnection,它只通过 ADOQuery 发生。

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

我希望这段代码能够捕获各种异常(如 ADOQuery Timeout)并简单地终止应用程序。

不知何故,我仍然收到 Query Timeout Exceeded 。(但也许它来自 ADOConnection 本身?)我不是 100% 确定。

如果我这样做会解决问题吗:

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

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

谢谢你。

更新

问题是 :

这不是捕获查询超时,因为它使用的 AdoConnection 不在 try except 块内?(我真的没有看到任何其他原因)

在此示例中,ADOConnection1 在第一个 ADOQuery.Open 上已连接,并且在软件完成之前一直保持这种状态。

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

这个除了似乎没有捕获所有查询超时......

4

1 回答 1

0

您正在使用正确放置这些组件的表单。

所以检查IDE的Connected属性TADOConnection是否在...true

现在,确保它是 ALWAYS ,因为当您创建表单时,此属性将在触发事件false之前“激活/打开”连接。OnCreate

于 2019-09-21T21:19:44.830 回答