SetTransObject
函數(shù)作用:為數(shù)據(jù)窗口或者DataStore指定一個(gè)事務(wù)對(duì)象。必須通過事務(wù)對(duì)象,PowerBuilder才能夠和數(shù)據(jù)庫進(jìn)行通信,才能夠進(jìn)行數(shù)據(jù)處理。這里的事務(wù)對(duì)象是基于程序的事務(wù)對(duì)象,可以對(duì)數(shù)據(jù)庫事務(wù)進(jìn)行更多的控制。在程序中,通過SQL語句中的Connect、Rollback、Commit等進(jìn)行事務(wù)的控制。使用該事務(wù)對(duì)象,可以為PB應(yīng)用程序建立一個(gè)和數(shù)據(jù)庫的永久性聯(lián)結(jié),在數(shù)據(jù)窗口或者DataStore每次進(jìn)行Retrieve或者Update前不必再臨時(shí)建立聯(lián)結(jié),而建立聯(lián)結(jié)是比較費(fèi)資源的一種操作,所以使用該函數(shù)可以提供更好的程序執(zhí)行性能。在調(diào)用該函數(shù)之前,應(yīng)該設(shè)置事務(wù)對(duì)象的各個(gè)參數(shù)。缺省的事務(wù)對(duì)象SQLCA,是一個(gè)Transaction類型的全局變量,可以在PB應(yīng)用程序中直接使用。也可以定義我們自己的事務(wù)對(duì)象。和該函數(shù)類型的還有SetTrans,兩者的區(qū)別是:SetTransObject不能對(duì)事務(wù)進(jìn)行自動(dòng)控制,都是由程序來控制的;使用函數(shù)SetTrans時(shí)程序不能控制事務(wù)對(duì)象,這時(shí)的事務(wù)都是自動(dòng)控制的。使用事務(wù)對(duì)象按照如下步驟進(jìn)行:
1) 設(shè)置事務(wù)對(duì)象的參數(shù),根據(jù)DBMS的不同而不同,可以在DB Profile對(duì)話框的Preview中找到語法。這些教本通常在Application的Open事件中編寫;
2)使用SQL語句Connect聯(lián)結(jié)數(shù)據(jù)庫。通常也是在Application的Open事件中編寫該教本。需要注意的是,一定要檢查是否聯(lián)結(jié)成功??梢酝ㄟ^SQLCA.SQLCode來判斷,如果SQLCA.SQLCode等于1則表示聯(lián)結(jié)成功。如果聯(lián)結(jié)不成功,則不應(yīng)該繼續(xù)允許。
3)調(diào)用SetTransObject函數(shù),為數(shù)據(jù)窗口對(duì)象設(shè)置事務(wù)對(duì)象。通常在窗口的Open事件或者數(shù)據(jù)窗口的Constructor事件中編寫。
4)在調(diào)用函數(shù)Update之后,檢查返回值是否為1,如果是1則使用事務(wù)語句Commit提交數(shù)據(jù),否則調(diào)用Rollback回退事務(wù)。
函數(shù)語法:integer dwcontrol.SetTransObject ( transaction transaction )
z dwcontrol:要設(shè)置事務(wù)對(duì)象的DataWindow、子數(shù)據(jù)窗口或者DataStore的名稱。
z transaction:事務(wù)對(duì)象名稱,是Transaction類型的變量。
返 回值:integer類型,1表示成功,如果發(fā)生錯(cuò)誤則返回-1,如果任意參數(shù)為Null則返回Null。
代碼實(shí)例:
例1:以下腳本在窗口的Open事件中編寫:
dw_1.SetTransObject(SQLCA)
例子2:以下腳本在數(shù)據(jù)窗口的Constructor事件中編寫:
This.SetTransObject(SQLCA)
例子3:以下教本在Application對(duì)象的Open事件中編寫:
// Profile Mpxt
SQLCA.DBMS = ProfileString('setup.ini','database','DBMS','')
SQLCA.AutoCommit = False
SQLCA.DBParm = ProfileString('setup.ini','database','DBParm','')
connect;
if sqlca.sqlcode = 0 then
Open(w_main)
else
MessageBox('錯(cuò)誤','不能和數(shù)據(jù)庫建立連接。按任意鍵關(guān)閉系統(tǒng)......',StopSign!)
halt close;
end if
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。