我有一个使用Delphi的TAdoConnection对象连接到MySql数据库的应用程序。这是一个非常查询密集型应用程序。所以我创建连接并保持打开以避免打开/关闭数据库连接的高资源开销。但显然会出现问题(数据库重启,网络连接失败等)。所以我内置了代码来释放我的数据库对象,重新创建它,并在查询失败时重新连接。
我有一个连接数据库的常用功能。相关代码是:
try
AdoConnection.open;
result := Adoconnection.Connected
except
result := False;
......
end;
我通过打开和关闭MySql数据库来运行一些测试。如果数据库在应用程序启动时关闭(即它正确抛出异常),一切正常。但是,如果我在应用程序已成功连接后关闭数据库,则后续重新连接不会引发异常,另外falsley报告为 AdoConnection.Connected 为true。我确信首先释放/重新创建了连接对象。
这里似乎存在某种缓存机制(很可能是在硬件/驱动程序级别 - 而不是应用程序级别)。有人有什么想法吗?
答案 0 :(得分:0)
我也观察到了这一点。
处理它的想法: