1

我将 Delphi 2010 与like 和FIB Components数据库TpFIBDataset一起使用。TpFIBTransactionTpFIBDatasetFirebird

我已经将 TpFIBDataset 的“AutoCommit”属性设置为“False”,然后当我在try..finally块中执行以下语句并回滚时,仍然会发布事务数据。

代码:

FIBDataset.Post;

下面是示例代码。

代码:

try
  FIBDatabase.StartTransaction;

       ....

          Block of Code;

       ...
    finally
      if saveALL then
        FIBDatabase.CommitRetaining
      else
        FIBDatabase.RollbackRetaining;
    end;
4

1 回答 1

0

还必须检查和更改数据集上的事务

FIBDataset.AutoCommit := false;

您还需要关闭查询。在这种情况下

FIBDataset.Close;
FIBDatabase.Rollback;

编辑

我还建议您将一个事务组件分配给所有数据集(而不是数据库)。并使用事务组件的启动、提交、回滚方法。此外,您必须在执行任何操作之前分配事务组件。

于 2015-06-17T02:02:27.273 回答