我正在使用Qt连接到MySQL数据库(通过QSqlTableModel / QSqlDatabase / etc),尽管这个问题更为通用。
获得“实时更新数据库表视图”的最佳方法是什么?一种选择是不断轮询整个表(在QSqlTableModel中重复调用select()方法)。 这似乎效率低下(每次从MySQL传递到Qt的整个表?)
另一种选择是拥有另一个表,它充当日志表(跟踪所有更新/更改),然后您可以轮询此日志表(仅检查新条目......这似乎更有效?) 。但是,你失去了许多内置QSql功能。)
或者我应该有一个我调查的计数器变量,然后如果增加,我知道刷新整个表吗?
所有这些方法看起来有点混乱......你会推荐什么?感谢。
答案 0 :(得分:0)
这真是一个MySQL问题,但我有答案! :)
你想要的是每隔X秒轮询数据库。但是,如果你使MySQL成为“触发器”,那么如果插入,更新和/或删除行,它将创建一个指示符。
我认为您应该创建一个触发器,将修改后的行插入第二个表中。来自Qt程序的民意调查应该采取以下行动:
如果您不锁定表,则可能会意外删除在读取和删除之间插入的新行。但是,如果您希望/需要避免锁定,只需读取所有内容,然后根据每行插入“修改”表中生成的唯一ID删除检索到的行。
MySQL触发器的FAQ和文档位于:http://dev.mysql.com/doc/refman/5.0/en/faqs-triggers.html
锁定/解锁表格的文档位于:http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html