使用Delphi 7检测未插入的网络电缆

时间:2014-10-19 12:25:09

标签: sql-server delphi tcp delphi-7

我正在构建一个从sql server检索数据的应用程序。 规范是在一台或多台机器上运行的应用程序,然而,这些机器与托管sql服务器的局域网在同一局域网中。 5天前,我遇到了如果出于某种原因,运行应用程序的计算机或承载sql server的计算机的网络电缆被拔掉的情况会发生什么情况。我意识到应用程序被冻结,然后Delpi-7产生错误消息。最终,应用程序以不友好的方式终止。

我尝试通过ADO1控件的“connection:= false”或通过应用程序在断开连接时检索的表事件来找到处理此事件的方法,但不幸的是我失败了。

所以我问是否有办法检测LAN网线 - 或与sql服务器的连接 - 何时松动,以便向用户显示一条消息以检查他的连接,并且 - 在最糟糕的情况下 - 以更友好的方式结束应用程序(例如使用“application.terminate”命令)。

提前谢谢

1 个答案:

答案 0 :(得分:0)

通常,Delphi数据库客户端会在出现错误时引发异常,您应该在应用程序代码中处理异常,方法是在正常终止或重新尝试(重新连接)之前显示错误消息,写入日志文件等。 。

如果您的代码使用事务(强烈建议使用),则连接丢失应该是无痛的。

您还可以运行健康检查'定期查询以尽早检测连接丢失。这可以在例如具有检测过时连接的后台线程的连接池中完成。这些' ping'查询还可以保持连接处于活动状态,这在某些环境中可能是一个优势。

使应用程序不易受到攻击的另一种策略是尽可能缩短连接和事务。 YMMV。

另请参阅:Efficient SQL test query or validation query that will work across all (or most) databases