我在全局DataModule中具有AutoCommit模式(连接到Firebird 3.0)中带有TZConnection的Delphi应用程序,该单个连接为应用程序所有数据模块中的所有查询提供服务。
但是我有一个问题,查询仅看到在连接阶段提交的数据,而查询没有来自其他应用程序实例或其他组件(例如IBX)的新数据/新数据数据集)。
TZConnection.Reconnect解决了此问题,但是我不确定在这种硬性重新连接期间其他打开的表单会发生什么情况。
大多数情况下,拥有TZonnection.CommitRetaining或RollbackRetaining过程(类似于IBX TIBTransaction的过程)会非常好,但是TZConnection不具有这样的功能,甚至TZConnection.Commit在AutoCommit模式下也不起作用(会引发错误,提交与自动提交模式不兼容。
所以-最佳实践是如何使用TZConnection获取新数据。打开新的DataModule或客户请求新报告时,我很乐意在TZonnection上执行某些功能。
答案 0 :(得分:1)
将TZConnection TransactionIsolationLevel属性设置为tiReadCommitted并将AutoCommit设置为true即可解决问题。