gpt4 book ai didi

delphi - 如何使用 Delphi DBExpress 监听 Firebird 事件

转载 作者:行者123 更新时间:2023-12-03 19:36:45 24 4
gpt4 key购买 nike

如何使用 Delphi DBExpress 监听 Firebird 事件?

我知道 Zeos/IBComponents 有专门的组件,不幸的是我不能使用这些。

最佳答案

更新 我找到了一种将事件监控添加到可能适用于您的情况的 DBExpress 应用程序的方法,在这种情况下,重新编写应用程序以避免使用 DBExpress 是不切实际的。这是我到目前为止所做的,它工作正常。

  • 我编写了一个最小的 DBExpress 应用程序,它打开和编辑一个 Interbase 表并将更改保存回数据库表。对于我在这次试验中的想法,我决定数据库是 Interbase 而不是 Firebird 并不重要。我们称这个应用程序为 DBXApp。
  • 然后我使用 Interbase 组件(IBDatabase 等)编写了等效的应用程序,并使用 IBEvents 组件包含事件支持,以将接收到的事件写入备忘录。让我们称之为 IBApp。
  • 同时运行 DBXApp 和 IBApp,IBApp 会看到 DBXApp 将更改保存到表时引发的事件。所以,我想:
  • 现在,在IDE中打开IDE中的DBXApp并将IBDatabase1、IBEvents1和Memo1复制到其中,将与IBApp中相同的代码添加到OnEventAlert处理程序(这实际上花了 90 秒),重新编译并运行。现在,DBXApp 中的备忘录看到了 IBApp 发布的表更新。因此,IBApp 可以看到由 DBXApp 触发的事件,反之亦然。
  • 现在在我看来——这是我尚未完成的部分——如果 您的 Firebird 数据库是 Delphi Interbase 组件可以连接的数据库,您应该能够修改您的 Firebird 应用程序以添加事件监控,就像我对 DBXApp 所做的那样。当然,这是一个很大的“如果”,但如果您的应用程序不是太新(听起来不太可能),那么也许 IBDatabase 将能够连接到它的 FB 数据库。

  • 步骤 1-3 只花了我几个小时(其中很大一部分是寻找广告修复我犯的愚蠢配置错误),所以我认为值得您尝试一下。让我们知道您的 body 情况如何。

    原答案你没有说为什么你不能使用 Zeos/IBComponents,但据我所知,DBExpress 不处理 Firebird 的 Post_Event 并且从谷歌结果来看,不容易做到,否则有人会这样做。

    你可以看看 Zeos 的 source code查看它如何实现 Post_Event 支持,然后在您的项目代码中执行类似操作。据推测,这将是一个向 Firebird 注册回调并处理它发送的内容的问题。

    另一个值得一看的地方是这篇(相当旧的)关于 Firebird events 的论文。 .虽然 Firebird 已经从 Interbase 分道扬镳,但我认为使用 IB 事件处理机制仍有合理的前景。

    顺便说一句,Delphi 的最新版本带有 FireDAC db 组件库,它支持来自后端 RDMS(包括 Firebird)的事件通知。如您所见 here ,它的 Firebird 事件警报器使用 Post_Event 机制。

    关于delphi - 如何使用 Delphi DBExpress 监听 Firebird 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53230958/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com