如何从Delphi应用程序监控特定表(实时) 并获取新的和更新的记录数据?
答案 0 :(得分:8)
通常,您可以使用数据库事件/通知/警报。确切的术语和实现取决于DBMS。有关详细信息,您可以在AnyDAC documentation检查“DBMS警报机制”。
在后端,您可能需要为所需的表实现触发器。对于某些DBMS,它不是必需的。例如,使用Firebird,触发器必须调用POST_EVENT
语句。使用SQL Server,必须调用一组特殊的查询更新通知API运算符来准备表。
在客户端上,您应该使用特殊的API,或者标准的SQL查询机制。例如,使用Firebird必须使用特殊事件API。使用Oracle后台线程+标准SQL API。
Delphi实现依赖于DBMS和数据访问组件。一些例子:
TIBEvents
与Firebird一起使用; 答案 1 :(得分:1)
SQL Server 2005及更高版本有一个通知机制......但我不知道有任何支持这种机制的免费组件......
如果商业组件是一个选项,Devart SDAC支持此选项。
我看到的唯一其他选项是轮询(可能来自后台线程) - 但轮询通常是你想避免IMO的事情。