使用PowerBuilder同時通路多個資料庫
您正在看的Powerbuilder教程是:使用PowerBuilder同時通路多個資料庫。 PowerBuilder 4.0是一套強大的資料庫應用系統開發工具,它具有完整的客戶/伺服器體系結構、面向對象的應用程式開發方法以及可視化的開發環境,因而成為近幾年流行的資料庫前端開發工具。
随着網絡的延伸和資訊系統的不斷開發,系統內建面臨着如何将分布在不同伺服器上的資料庫系統內建到一起的問題。如下圖所示:
某個客戶應用可能需要在同一視窗同時通路兩個伺服器上的兩個不同種資料庫,PowerBuilder為這種需求提供了令人滿意的解決方案。
方案一:
通過Transaction Object同時打開多個事務,再通過多個事務存取建立在不同資料庫上的DataWindows。
方案二:
通過資料管道(DataPipeLine)将其它資料庫上基表中的資料傳送到主資料庫上,對資料管道還可加上過濾條件,以便隻傳送需要的資料。
具體實作方案
本文在一個視窗上的兩個按鈕具體顯示方案一和方案二,這個視窗如右圖所示。在這個視窗中的三個事件腳本(Scripts)如下:
(1)打開視窗事件腳本(Open for W_LC)
Transaction lc_oracle,lc_ingres
∥初始化oracle資料庫事務
lc_oracle=CREATE transaction
lc_oracle.DBMS ="OR7 ORACLE v7.x"
lc_oracle.Database ="ora7"
lc_oracle.logId ="Ljb"
lc_oracle.logPassword ="Ljbljb"
lc_oracle.ServerName ="@t:132.147.111.8" ∥初始化ingres資料庫事務
lc_ingres=CREATE transaction
lc_ingres.DBMS ="ODBC"
lc_ingres.Database ="xxzx2"
lc_ingres.userid ="nt"
lc_ingres.dbpass ="ingres"
lc_ingres.dbparm ="ConnectString='DSN=kfml;&
SRVR=nt;DB=xxzx2;OPTS=;UID=ingres'"
(2)同時通路兩個資料庫的腳本(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()
(3)資料管道的腳本(Clicked for CB_PipeLine)
/*說明一個支援資料管道的對象,lc_object是在
User Object Painter中定義的PipeLine對象*/
lc_object lcl_object
∥啟動資料管道
integer start_result
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=-3
messagebox("資料管道錯","此基表已存在");
return
end if
disconnect using lc_oracle;
disconnect using lc_ingres;
小結
PowerBuilder不僅為應用系統的快速開發提供了強有力的支援工具,而且為30多種資料庫提供了直接連接配接或ODBC連接配接,再加上Transaction Object和Data PipeLine同時存取多個資料庫的功能,為大中型企業在資訊系統建設的中後期完成系統的互連提供了簡捷有效的方法