FireDAC下使用单个连接实现TFDEventHandler事件监听与数据查询
单连接复用实现方案
可以仅使用单个数据库连接同时完成事件监听和常规查询请求,无需使用TFDEventHandler自动创建的克隆连接,操作步骤如下:
- 第一步:修改
TFDEventHandler的默认配置,将其CloneConnection属性设置为False,关闭自动克隆连接的特性 - 第二步:将
TFDEventHandler.Connection属性关联到你当前正在使用的现有FDConnection实例,不要单独创建新的连接对象 - 第三步:配置事件监听规则,在
TFDEventHandler.EventNames属性中填写你PostgreSQL数据库中定义的NOTIFY事件名称,调用Register方法完成事件注册 - 第四步:在
TFDEventHandler.OnAlert事件回调中编写DbGrid绑定数据集的刷新逻辑,比如调用绑定的TFDQuery.Refresh方法即可实现数据变更自动更新DbGrid
注意事项
- PostgreSQL本身的LISTEN/NOTIFY机制支持在同一连接上执行常规查询操作,只要关闭克隆连接配置就不会产生额外连接占用
- 避免在该连接上执行长时间阻塞的查询操作,否则会导致事件通知接收延迟,如有长查询需求建议单独拆分连接处理
- 如果现有连接触发了断开重连逻辑,重连完成后需要重新调用
TFDEventHandler.Register方法,否则监听事件会失效
内容的提问来源于stack exchange,提问作者H.Hamad
相关产品推荐
相关产品推荐

