uniDac 我對uniDac的事務處理

2021-08-14 10:12:55 字數 999 閱讀 4442

我在用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

tryif 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使用演示

unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dialogs,stdctrls,grids,dbgrids,db,dbaccess,uni,memds,unipro...

unidac記錄日誌

unidac記錄日誌 1 sql日誌記錄 tunisqlmonitor的onsql事件裡面記錄sql日誌,演示 如下 procedure tfrmdb.unisqlmonitor1sql sender tobject text string flag tdatraceflag begin sflog...

unidac記錄日誌

unidac記錄日誌 1 sql日誌記錄 tunisqlmonitor的onsql事件裡面記錄sql日誌,演示 如下 procedure tfrmdb.unisqlmonitor1sql sender tobject text string flag tdatraceflag begin sflog...