一PowerBuilder中的WEB應用模塊
PowerBuilder中含有開發WEB應用的模塊通過這些模塊可以連接WEB服務器與PowerBuilder應用.該模塊包括以下及部分WebPB:是幾個可以在WEB服務器上執行的程序被服務器激活後調用PowerBuilder應用完成客戶端任務和對數據庫的事務操作.Plug_ins(插入件)包括Window plug_in和Datawindow Plug_in此方式可將PowerBuilder對象嵌入到頁面中在浏覽器端執行PowerBuilder應用.Window Activex: 此方式與Window plug_in類似 所不同在於該方式可以和HTML中的JavaScriptsVBscripts交互.本文主要討論利用WebPB開發WEB應用.
二用WebPB開發WEB應用
WebPB本身就是個CGI程序它提供了從服務器到PowerBuilder應用的訪問.所以在WebPB之上可以利用PowerBuilder的強大功能開發復雜的WEB應用如采用PowerBuilder的PowerScripts語言環境數據窗口技術等.PowerBuilder的WEB應用構建前提是分布式應用體系.PowerBuilder的客戶端應用分布到WEB服務器上可將WebPB看作為客戶端應用.當客戶端應用WebPB被WEB服務器激活後調用PowerBuilder的服務器應用執行在服務器應用中定義的方法實現業務邏輯
這種模式是真正的廋客戶機模式客戶端不需要安裝其它軟件只安裝浏覽器軟件.所有的事務操作都在服務器端完成下面將結合實例詳細說明
利用PowerBuilder開發一個網上購書應用.對於分布式PowerBuilder應用首先應向客戶WebPB指明PowerBuilder服務器應用在網絡上的位置(Location)其應用名使用文件PBWEBINI來記錄服務器應用信息.在此例中取服務器應用名為TUTORIAL Driver=Winsock Application=/tcp Location=Localhost
建一個數據庫(book_dealing)其中有三個表分別為
book b_name b_no b_publisher b_priceb_num
customer c_name c_telc_addr
dealing b_name c_name d_num d_time
建一個數據窗口dw_book其SQL語法為
SELECT bookb_name
bookb_no
bookb_publisher
bookb_price
bookb_num
FROM book
創建PB服務器應用的用戶界面在窗口w_server上有兩個按鈕cb_cb_再定義一個transport類型的實例變量mytransportcb_的clicked事件有關程序如下
mytransport = create transport
mytransport driver = winsock
mytransportlocation = localhost
mytransportapplication =
創建一個不可視的用戶對象u_internet定義一個transaction類型的全局變量mytransaction在該用戶對象的constructor事件中定義連接到數據庫(book_dealing)的事務對象mytransaction和連接到數據庫(webpb)的事務對象sqlca在該對象的destructor事件中分別取消這兩個事務對象
在u_internet上定義兩個函數分別為f_book f_book_dealing這兩個函數的返回值都為字符類型在f_book中利用數據窗口dw_book作數據庫查詢再利用數據窗口的屬性將查詢結果以HTML形式返回給webpb有關程序如下
string return_html
datastore dd
dd = create datastore
dddataobject = dw_book
ddsettransobject(mytransaction)
ddretrieve()
return_html=return_html+ddobjectdatawindowdatahtmltable
return return_html
在函數f_dealing中定義參數分別為book_name deal_num custom_name deal_time custom_tel custom_addr用來接受FORM元素傳來的信息再利用PowerScripts語言對數據庫(book_dealing)進行修改有關程序如下
string return_html
…………
connection using mytransaction;
insert into customer
(c_name
c_tel
c_addr)
values( :custom_name :custom_tel :custom_addr);
insert into dealing
(b_name
d_num
d_time
c_name)
value(:book_name :deal_num :deal_time :custom_name);
if mytransactionsqlcacode> then
return_html=定貨成功!
else
return_html=定貨失敗!
endif
………
return return_html
主頁上的浏覽書庫的超連接為 A HERF=/scripts/pbcgiexe/tutorial/u_internet/f_book〉 浏覽書庫</A>
定書信息頁上應有幾個單行編輯器用來錄入用戶購書信息(例如:書名用戶名購書數量等等)其FORM元素的ACTION為
<form action= /scripts/pbcgiexe/tutorial/u_internet/f_book_dealingmethod= get>
以上程序可實現簡單的網上購書的功能既用戶可浏覽書庫也可訂購所需的圖書
From:http://tw.wingwit.com/Article/program/SQL/201311/16416.html