熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PB編程 >> 正文

使用PowerBuilder同時訪問多個數據庫

2022-06-13   來源: PB編程 

  PowerBuilder 是一套強大的數據庫應用系統開發工具它具有完整的客戶/服務器體系結構面向對象的應用程序開發方法以及可視化的開發環境因而成為近幾年流行的數據庫前端開發工具

  隨著網絡的延伸和信息系統的不斷開發系統集成面臨著如何將分布在不同服務器上的數據庫系統集成到一起的問題某個客戶應用可能需要在同一窗口同時訪問兩個服務器上的兩個不同種數據庫PowerBuilder為這種需求提供了令人滿意的解決方案

  方案一  通過Transaction Object同時打開多個事務再通過多個事務存取建立在不同數據庫上的DataWindows

  方案二  通過數據管道(DataPipeLine)將其它數據庫上基表中的數據傳送到主數據庫上對數據管道還可加上過濾條件以便只傳送需要的數據

  具體實現方案

  本文在一個窗口上的兩個按鈕具體顯示方案一和方案二在這個窗口中的三個事件腳本(Scripts)如下

  )打開窗口事件腳本(Open for W_LC)

  Transaction lc_oraclelc_ingres

  ∥初始化oracle數據庫事務

  lc_oracle=CREATE transaction

  lc_oracleDBMS =OR ORACLE vx

  lc_oracleDatabase =ora

  lc_oraclelogId =Ljb

  lc_oraclelogPassword =Ljbljb

  lc_oracleServerName =@t: ∥初始化ingres數據庫事務

  lc_ingres=CREATE transaction

  lc_ingresDBMS =ODBC

  lc_ingresDatabase =xxzx

  lc_ingresuserid =nt

  lc_ingresdbpass =ingres

  lc_ingresdbparm =ConnectString=DSN=kfml;&

  SRVR=nt;DB=xxzx;OPTS=;UID=ingres

  )同時訪問兩個數據庫的腳本(Clicked for CB_MutiDBMS) ∥訪問 oracle數據庫

  connect using lc_oracle;

  dw_oracleSetTrans(lc_oracle)

  dw_oracleretrieve()

  ∥訪問ingres數據庫

  connect using lc_ingres;

  dw_ingresSetTrans(lc_ingres)

  dw_ingresretrieve()

  ()數據管道的腳本(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_objectdataobject=lc_pipeline

  start_result=lcl_objectstart &(lc_oraclelc_ingresdw_oracle)

  If start_result=

  messagebox(數據管道錯此基表已存在

  return

  end if

  disconnect using lc_oracle;

  disconnect using lc_ingres;

  小結

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


From:http://tw.wingwit.com/Article/program/PB/201311/24647.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.