使用PowerBuilder同時訪問多個資料庫

happymagic發表於2014-11-21

隨著網路的延伸和資訊系統的不斷開發,系統整合面臨著如何將分佈在不同伺服器上的資料庫系統整合到一起的問題。某個客戶應用可能需要在同一視窗同時訪問兩個伺服器上的兩個不同種資料庫,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  
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=-3  
messagebox("資料管道錯","此基表已存在");  
return  
end if  
disconnect using lc_oracle;  
disconnect using lc_ingres;  

小結 

PowerBuilder不僅為應用系統的快速開發提供了強有力的支援工具,而且為30多種資料庫提供了直接連線或ODBC連線,再加上Transaction Object和Data PipeLine同時存取多個資料庫的功能,為大中型企業在資訊系統建設的中後期完成系統的互連提供了簡捷有效的方法。

很老的資料了,但有時也會用得著。

相關文章