【问题标题】:MySQL TAdoConnnection connection "connected" property incorrectly set TrueMySQL TAdoConnnection 连接“已连接”属性错误设置为 True
【发布时间】:2011-07-05 20:38:04
【问题描述】:

我有一个使用 Delphi 的 TAdoConnection 对象连接到 MySql 数据库的应用程序。这是一个查询非常密集的应用程序。所以我创建连接并保持打开状态,以避免打开/关闭数据库连接的高资源开销。但显然会出现问题(数据库重新启动、网络连接失败等)。所以我内置了代码来释放我的数据库对象,重新创建它,并在查询失败时重新连接。

我有一个通用的函数来连接数据库。相关代码是这样的:

try
  AdoConnection.open;
  result := Adoconnection.Connected
except
  result := False;
  ......
end;

我通过打开和关闭 MySql 数据库进行了一些测试。如果数据库在应用程序启动时关闭(即它正确地引发异常),则一切正常。但是,如果我在应用程序已成功连接后关闭数据库,则后续重新连接不会引发异常,并且另外 falsley 报告 AdoConnection.Connected 为 true。我确信连接对象首先被释放/重新创建。

这里似乎有某种缓存机制(很可能在硬件/驱动程序级别 - 而不是应用程序级别)。有人有什么想法吗?

【问题讨论】:

    标签: mysql delphi ado


    【解决方案1】:

    我也观察到了这一点。

    处理它的想法:

    1. 如果您在运行查询时遇到错误,请检查是否是连接问题,如果是,请尝试重新连接,然后再次运行查询。
    2. 如果您的程序使用计时器并在运行批次查询之间等待一段时间,则在每个批次之前执行一个简单的查询(可能是“select now()”),如果查询失败则尝试重新连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 2019-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-03
      相关资源
      最近更新 更多