使用PowerBuilder同时访问多个数据库
PowerBuilder 是一套强大的数据库应用系统开发工具 它具有完整的客户/服务器体系结构 面向对象的应用程序开发方法以及可视化的开发环境 因而成为近几年流行的数据库前端开发工具
随着网络的延伸和信息系统的不断开发 系统集成面临着如何将分布在不同服务器上的数据库系统集成到一起的问题 某个客户应用可能需要在同一窗口同时访问两个服务器上的两个不同种数据库 PowerBuilder为这种需求提供了令人满意的解决方案
方案一 通过Transaction Object同时打开多个事务 再通过多个事务存取建立在不同数据库上的DataWindows
方案二 通过数据管道(DataPipeLine)将其它数据库上基表中的数据传送到主数据库上 对数据管道还可加上过滤条件 以便只传送需要的数据
具体实现方案
本文在一个窗口上的两森碧个按钮具体显示方案一和方案二 在这个窗口中的三个事件脚本(Scripts)如下
( )打开窗口事件脚本(Open for W_LC)
Transaction lc_oracle lc_ingres
∥初始化oracle数据库事务
lc_oracle=CREATE transaction
lc_oracle DBMS = OR ORACLE v x
lc_oracle Database = ora
lc_oracle logId = Ljb
lc_oracle logPassword = Ljbljb
lc_oracle ServerName = @t: ∥初始化ingres数据库事务
lc_ingres=CREATE transaction
lc_ingres DBMS = ODBC
lc_ingres Database = xxzx
lc_ingres userid = nt
lc_ingres dbpass = ingres
lc_ingres dbparm = ConnectString= DSN=kfml;&
SRVR=nt;DB=xxzx ;OPTS=;UID=ingres
( )同时访问两个数据库的脚本(Clicked for CB_MutiDBMS) ∥访问 oracle数据库
connect using lc_oracle;
dw_oracle SetTrans(lc_oracle)
dw_oracle retrieve()
∥访问ingres数据库
connect using lc_ingres;
dw_ingres SetTrans(lc_ingres)
dw_ingres retrieve()
( )数据管道的脚本(Clicked for CB_PipeLine)
/*说明一个支持数据管道的对象 lc_object是在
User Object Painter中定义的PipeLine对象*/
lc_object lcl_object
∥启动数据管道
integer start_result
connect using lc_oracle;
connect using lc_ingres;
lcl_object=create lc_object
/*lc_pipeline是在PipeLine Painter中定义的数据管道 以便将ingres基表中的改大数据传送此歼举到oracle数据库基表中*/
lcl_object dataobject= lc_pipeline
start_result=lcl_object start &(lc_oracle lc_ingres dw_oracle)
If start_result=
messagebox( 数据管道错 此基表已存在 )
return
end if
disconnect using lc_oracle;
disconnect using lc_ingres;
小结
lishixinzhi/Article/program/PB/201311/24647