uniDac 我对uniDac的事务处理

我在用uniDac时发现一个很奇怪的问题,我用一个TUniConnection控件连接一个事务控件。在一个程序中有两个uniQuery,一个负责查询并得到数据uniQ_Show,一个用于对数据的插入和更新uniQ_Do。可是,我在用uniQ_Do对数据进行更新,并用事务控件进行提交后,竟然使uniQ_Show控件关闭了。真是很奇怪,我也不知道是什么原因,也不知道怎么解决。

后来,我就再引入了另一个TUniConnection控件,分别让这两个uniQuery控件连接。也即是一个TUniConnection负责查询,一个负责提交数据。算是解决了提交数据与查询数据时相互干扰的问题。

不过,在解决问题之前,我发现另一个问题。之前我是用事务控件来提交数据的。第一个TUniConnection控件就连接了事务控件,本来第二个TUniConnection控件我想让它的事务属性为默认就好。可是,就是不行,也就是说,程序一运行就出错。最后没有办法,干脆不要事务控件了,直接用TuniConnection控件默认的事务处理就好了。不知道加不加事务控件的差别在哪里。

如果有哪位网友知道,请留言帮帮我。感谢!

下面是事务的一些资料与代码:

事务:

TUniConnection通过StartTransaction, Commit, Rollback等方法来控制本地事务,判断一个事务是否开启用InTransaction。

代码:

with A01F do

      begin
        try
          if not UniConn.InTransaction then
            UniConn.StartTransaction;
          UniScript.SQL.Text:=strSQL;
          UniScript.Execute;
          UniConn.Commit;
        except
          on e: Exception do
          begin
            UniConn.Rollback;
            ShowMessage('提交参数时出错!错误代码:'+#13+e.Message);
          end;
        end;
      end;

uniDac参考资料:

1、uniDAC用法总结;

2、 mysql + unidac 使用事务例子

你可能感兴趣的:(uniDac)