如果外部 ADO 连接已连接或断开,如何检测组件内部?
Posted
技术标签:
【中文标题】如果外部 ADO 连接已连接或断开,如何检测组件内部?【英文标题】:How to detect inside a component if an external ADO Connection has connected or disconnected? 【发布时间】:2012-11-11 10:32:49 【问题描述】:我正在开发一个与数据库一起使用的组件,并且数据库连接是通过 TADOConnection
属性从该组件外部指定的,该属性在对象检查器中可见。我假设外部用户可能打算使用此 ADO 组件的事件。然而,我还需要能够检测它何时连接或断开连接,以及其他各种事件。我能否在不覆盖外部用户可能已分配的事件处理程序的情况下获取 TADOConnection
的事件?
【问题讨论】:
检测是指在连接/断开连接时收到通知或事件? 是的,还有所有的事件,比如OnCommitTransComplete
——我只是不想干扰用户对这些事件的执行。
有趣的事实:ADO 连接有时可以被丢弃或断开,而您的 TADOConnection.Connected 属性不会变为假,至少对于远程 MS SQL Server ADO 连接是这样。当发生严重的网络故障或 SQL 服务器抖动和过载时,我就会发生这种情况。
【参考方案1】:
没有严重的副作用和/或严格的限制,没有解决方案。
您必须重新路由事件,但是...
外部用户可以在设计时修改事件(可以以某种方式处理),也可以在运行时修改事件,并且每种方法都会中断。
作为一种(可能)可能的解决方法(这是一个限制),您可以从 TADOConnection 发布自己的下降并强制外部用户使用它,并实现多播事件。
如果你只是想知道连接/断开事件,你可以调用受保护的方法 TCustomConnection.RegisterClient (unit Data.DB)
【讨论】:
以上是关于如果外部 ADO 连接已连接或断开,如何检测组件内部?的主要内容,如果未能解决你的问题,请参考以下文章