【问题标题】:How to detect inside a component if an external ADO Connection has connected or disconnected?如果外部 ADO 连接已连接或断开,如何检测组件内部?
【发布时间】:2012-11-11 10:32:49
【问题描述】:

我正在开发一个与数据库一起使用的组件,并且数据库连接是通过 TADOConnection 属性从该组件外部指定的,该属性在对象检查器中可见。我假设外部用户可能打算使用此 ADO 组件的事件。然而,我还需要能够检测它何时连接或断开连接,以及其他各种事件。我能否在不覆盖外部用户可能已分配的事件处理程序的情况下获取 TADOConnection 的事件?

【问题讨论】:

  • 检测是指在连接/断开连接时收到通知或事件
  • 是的,还有所有的事件,比如OnCommitTransComplete——我只是不想干扰用户对这些事件的执行。
  • 有趣的事实:ADO 连接有时可以被丢弃或断开,而您的 TADOConnection.Connected 属性不会变为假,至少对于远程 MS SQL Server ADO 连接是这样。当发生严重的网络故障或 SQL 服务器抖动和过载时,我就会发生这种情况。

标签: delphi events properties components delphi-xe2


【解决方案1】:

没有严重的副作用和/或严格的限制,没有解决方案。

您必须重新路由事件,但是...

外部用户可以在设计时修改事件(可以以某种方式处理),也可以在运行时修改事件,并且每种方法都会中断。

作为一种(可能)可能的解决方法(这是一个限制),您可以从 TADOConnection 发布自己的下降并强制外部用户使用它,并实现多播事件。

如果你只是想知道连接/断开事件,你可以调用受保护的方法 TCustomConnection.RegisterClient (unit Data.DB)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 2012-11-03
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 2014-10-05
    相关资源
    最近更新 更多