茶书籍:函数SetTransObject

来源:百度文库 编辑:九乡新闻网 时间:2024/04/25 12:20:42
SetTransObject
函数作用:为数据窗口或者DataStore指定一个事务对象。必须通过事务对象,PowerBuilder才能够和数据库进行通信,才能够进行数据处理。这里的事务对象是基于程序的事务对象,可以对数据库事务进行更多的控制。在程序中,通过SQL语句中的Connect、Rollback、Commit等进行事务的控制。使用该事务对象,可以为PB应用程序建立一个和数据库的永久性联结,在数据窗口或者DataStore每次进行Retrieve或者Update前不必再临时建立联结,而建立联结是比较费资源的一种操作,所以使用该函数可以提供更好的程序执行性能。在调用该函数之前,应该设置事务对象的各个参数。缺省的事务对象SQLCA,是一个Transaction类型的全局变量,可以在PB应用程序中直接使用。也可以定义我们自己的事务对象。和该函数类型的还有SetTrans,两者的区别是:SetTransObject不能对事务进行自动控制,都是由程序来控制的;使用函数SetTrans时程序不能控制事务对象,这时的事务都是自动控制的。使用事务对象按照如下步骤进行:
1) 设置事务对象的参数,根据DBMS的不同而不同,可以在DB Profile对话框的Preview中找到语法。这些教本通常在Application的Open事件中编写;
2)使用SQL语句Connect联结数据库。通常也是在Application的Open事件中编写该教本。需要注意的是,一定要检查是否联结成功。可以通过SQLCA.SQLCode来判断,如果SQLCA.SQLCode等于1则表示联结成功。如果联结不成功,则不应该继续允许。
3)调用SetTransObject函数,为数据窗口对象设置事务对象。通常在窗口的Open事件或者数据窗口的Constructor事件中编写。
4)在调用函数Update之后,检查返回值是否为1,如果是1则使用事务语句Commit提交数据,否则调用Rollback回退事务。
函数语法:integer dwcontrol.SetTransObject ( transaction transaction )
z dwcontrol:要设置事务对象的DataWindow、子数据窗口或者DataStore的名称。
z transaction:事务对象名称,是Transaction类型的变量。
返 回值:integer类型,1表示成功,如果发生错误则返回-1,如果任意参数为Null则返回Null。
代码实例:
例1:以下脚本在窗口的Open事件中编写:
dw_1.SetTransObject(SQLCA)
例子2:以下脚本在数据窗口的Constructor事件中编写:
This.SetTransObject(SQLCA)
例子3:以下教本在Application对象的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('错误','不能和数据库建立连接。按任意键关闭系统......',StopSign!)
halt close;
end if