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

利用POWERBUILDER開發數據庫的WEB查詢

2013-11-13 12:40:32  來源: SQL語言 

  一WEBPB的工作原理

  POWERBUILDER對分布式計算的支持使得它能夠通過INTERNET/INTRANET來調用遠程對象服務通過WEBPB可以將POWERBILDER的分布式計算能力擴展到WWW網中WEBPB允許服務器動態地將內容轉換成HTML傳送到客戶端的浏覽器中當一個HTML文檔調用了一個遠程對象的方法或者函數時WEBPB將請求結果傳送給POWERBUILDER的服務應用由POWERBUILDER的服務應用執行相應的代碼並將結果返回給浏覽器這就是WEBPB的工作原理它實際上是通過網關接口(CGI)來調用PB應用服務的在HTML中有兩個標簽可以用來調用PB的應用服務窗體< FORM >和錨點< A >前者是在窗體命令中激活一個PB應用後者是通過調用超鏈接來指向PB應用的

  系統的運行環境

  合肥市電信局網管中心目前運行的電話網網管系統有本地網集中監控和維護系統和長途網管系統其中本地網網管系統采用安徽省自行開發的一套系統服務器為ALPHA 小型機操作系統為Digital Unix 長途網管采用郵電部電信總局統一開發的ROMA系統操作系統為SCO UNIX數據庫均為SYBASE SQL SERVER我們另外采用了一台IBM Netfinity 作為WEB服務器采用Microsoft Windows NT 為操作系統 IIS提供WWW服務在安裝POWERBUILDER 時選擇自定義安裝然後選擇Internet Tools中的WEBPB選項即可

  三配置IIS服務器

  Microsoft Internet Information Server(IIS)的主目錄下有一個子目錄\scrips這是IIS用來存放CGI程序的目錄如果需要使用標准CGI程序則將\PB\IT\BIN\PBCGIEXE復制到這個目錄下即可如果使用ISAPI接口則需要復制的文件是pbisadll

  但是為了保證服務能正常運行還必須自行查看IIS服務的目錄映像表其步驟如下

  確定IIS已經安裝且運行正常

  運行Internet Service Manager程序

  選擇需要安裝配置的Web服務(IIS支持多種服務並能夠對多台計算機的服務進行管理)

  從菜單條中選擇屬性菜單下的服務屬性菜單項

  選擇Directories頁

  確定有一個別名為/scripts/的目錄項(別名即虛擬目錄名)

  選擇/scripts/並單擊Properties按鈕

  確定Execute是在Access組中唯一被選中的項目(在這個目錄中不允許客戶機執行讀寫操作)

  如果對屬性作了修改選擇OK進行保存

  如果沒有/scripts目錄可以添加一個

  四編輯hosts 和 services 文件

  采用任何一個文本編輯器編輯這兩個文件通常hosts文件在c:\winnt\system\driver\etc目錄下添加下面一行:

   HFSA

  其中HFSA為主機名為IP地址

  在c:\winnt\services文件中添加下面一行

  myapp /tcp

  這一行的意義在於將所創立的PB服務添加到Windows的服務注冊文件中使用TCP/IP協議的應用程序都需要使用一個端口服務應用程序將在這個端口布置一個監聽程序這個程序能夠捕捉到任何發送到這個端口的請求並將請求輸送到應用程序中比如HTTP協議協議使用端口FTP采用TCP的端口這裡指定myapp 使用TCP的端口獲取一個可用端口的方法是把上一行的端口號加即可

  五查詢目標

  SQL SERVER名: HFWG_SYB

  數據庫名exsydb

  表名和表結構s_a

  字段名數據類型長度字段意義

  Ofcnamechar局名

  Dateint日期

  Timesmallint時間

  Namechar路由名稱

  NcitInt電路數

  Ncctfloat 可用電路數

  Pegsint呼叫次數

  SeizInt占用次數

  Succint成功次數

  AnswInt應答次數

  Serlfloat 占用話務量

  Rerlfloat 通話話務量

  Retriesint 中繼重選次數

  no_answint 久叫不應次數

  cong_dist int 對端擁塞次數

  ls_busyint 對端市話忙次數

  ts_busyint 對端長話忙次數

  要求在浏覽器中輸入日期和時間對表s_a查詢並在網頁中反映出結果

  六創建Powerbuilder應用程序

   新建一個應用(myapp)

   新建一個窗口(w_)定義一個instance 變量(i_server_transport)

   單擊應用畫板中的script按鈕為myapp應用的open事件編寫代碼如下

  open(w_)

   打開窗口w_為它的open事件編寫代碼如下

  int li_ListenReturnCode

  /*創建傳輸對象並設置其屬性*/

  i_server_transport = CREATE transport

  i_server_transportdriver=winsock //采用TCP/IP協議

  i_server_transportapplication=myapp //應用名稱

  i_server_transportlocation=HFSA //本地連接

  /*監聽客戶並返回狀態值*/

  li_ListenReturnCode= i_server_transportListen()

  if(li_ListenReturnCode< >) then

  MessageBox(服務器監聽出錯&

  服務器不能正常進行監聽~r~n~r~n+&

  請確保當前TCP/IP服務不能被其它埠占據以及+&

  myapp /tcpstopsign!)

  Halt

  Endif

   為w_的close事件編寫代碼如下:

  i_server_transportstopListening() //停止在埠的監聽

  DESTORY i_server_transport //從內存中清除傳輸對象

  close(parent)

   創建一個datawindow(d_zy)查詢條件為日期時間這是POWERBUILDER的特色之一這裡就不作詳細解釋

   定義一個用戶對象u_web_ct並定義一個UserObject Function f_get_a(integer dateinteger time) return string

  其代碼如下

  datastore ds_tf

  string ls_html

  int li_rowcount

  //連接數據庫

  sqlcaDBMS=SYC Sybase System CTLIB

  sqlcaDatabase=exsydb

  sqlcaUserId=sa

  sqlcaDbpass=

  sqlcaLogPass=

  sqlcaServerName=HFWG_SYB

  sqlcaLogId=sa

  sqlcaDbParm=

  connect using sqlca;

  if sqlcasqlcode < > then

  Messagebox( connect error)

  end if

  ds_tf = create datastore

  ds_tfdataobject=d_a

  ds_tfSetTransObject(sqlca)

  li_rowcount=ds_tfRetrieve(datetime)

  if li_rowcount= then

  disconnect using sqlca;

  return no record!

  elseif li_rowcount< then

  disconnect using sqlca;

  Return retrieve failure!

  end if

  ls_html = ds_tfObjectDataWindowdataHTMLTable

  destroy ds_tf

  disconnect using sqlca;

  return ls_html

  七使用

  在主頁中添加如下代碼

  < form name=form method=post

  action=http:///scripts/

  pbcgiexe/internet/u_web_ct/f_get_a? >

  < font size= >< b >< p >日期 < input type=text name=

  date size= > < /b >< /font >< /p >

  < p >< b >< font size= >時間: < /font >< font size= >

  < input type=text name=time size= > < /font >< /b >< /p >

  < p >< input type=submit name=Submit value=Submit > < /p >

  < /form >

  運行myapp應用啟動浏覽器輸入日期和時間結果如下:

  八小結

  由於POWERBUILDER是專業級的數據庫開發工具可以不受數據庫的種類和平台的限制采用它的WEBPB技術來進行Internet/Intranet開發能夠將開發者的精力都集中到業務邏輯的實現上而不是花費大量的時間去考慮和數據庫連接的問題這種基於浏覽器/服務器結構的應用優勢在於系統的維護簡單幾乎所有的工作都集中在WEB服務器上大大減少了對多個客戶端的維護工作另外由於能夠將運算任務合理地分布在浏覽器和服務器之間整個系統運行的費用也將大大降低


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