1

我正在创建一个依赖于 MySQL 表中信息的 GUI,我想要做的是在每次使用新数据更新表时显示一条消息。我不知道如何做到这一点,或者即使它是可能的。我有检索最新 MySQL 更新的代码,但我不知道每次新数据进入表时如何发送消息。谢谢!

4

2 回答 2

3

非常简单直接的解决方案就是从您的表中轮询最新的自动增量 id,并将其与您在之前的轮询中看到的进行比较。如果它更大——你有新数据。这称为“主动轮询”,实现起来很简单,如果您不经常这样做就足够了。因此,您必须将最后一个 id 值存储在 GUI 中的某个位置。请注意,当您重新启动 GUI 应用程序时,此存储的值将重置——一定要考虑在 GUI 启动时要做什么。可能您只需要跟踪 GUI 运行时发生的插入——然后,在 GUI 启动时,您只需要轮询并存储当前 id 值,然后定期轮询并对其更改做出反应。

于 2012-07-19T19:18:49.913 回答
1

@spacediver 提供了一些关于主动轮询方法的好建议。我还想发布一些其他选项。

您可以使用某种类型的消息传递来在客户端之间传递通知。ZeroMQ、twisted 等提供这些功能。一种方法是让更新客户端发出消息以及他们成功的数据库插入。客户端都可以收听通知通道,而不是总是轮询数据库。

如果您无法控制向执行插入的客户端添加更新消息,您还可以查看此链接以使用数据库触发器调用脚本,该脚本只会向您的消息传递框架发出更新消息。它解释了安装 UDF 扩展以允许您在触发器中运行 sys_exec 命令并调用简单脚本。

这样,客户只需响应通知,而不是定期检查。

于 2012-07-19T19:43:48.673 回答