Delphi - DB Refresh替代方案

3

我正在使用Delphi和Firebird DB开发一款软件,该软件显示了许多计算结果,并根据要求在其他相关表格更新时存储和展示总数。

目前,我正在使用TIBTable组件的刷新方法来向用户显示这些计算结果。鉴于这是一个多用户应用程序,而且刷新会使提交变慢,是否有其他更优化的替代方案?

2个回答

3
对于一个多用户应用程序,客户端需要接收通知,其中一种选择是使用 Firebird事件发送每个数据更改(SQL INSERT、UPDATE或DELETE)的“广播”消息。

客户端可以“注册”(监听)特定类型的消息,每当Firebird服务器发送带有此类型的消息时,他们将收到它,并运行客户端应用程序代码,在您的情况下会刷新用户界面对象以显示总数。

虽然这在许多简单的用例中可能是足够的解决方案,但也有一些限制。我最近在此处发表了关于此主题的博客:

(我是Delphi和Free Pascal的中间件库的作者)


1

刷新以获取新数据确实没有其他方法。但是,如果您正在使用 IBObjects 进行数据库访问,则可以使用 TIBOTable.InvalidateBookmark 方法仅刷新特定行。这比调用 Refresh 要快得多,后者会刷新整个数据集。

查看 文档,不幸的是似乎 TIBTable 没有类似的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接