powerbuilder:利用POWERBUILDER开发数据库的WEB查询

、WEB.PB工作原理

POWERBUILDER对分布式计算支持使得它能够通过INTERNET/INTRANET来远程对象服务通过WEB.PB可以将POWERBILDER分布式计算能力扩展到WWW网中WEB.PB允许服务器动态地将内容转换成HTML传送到客户端浏览器中个HTML文档个远程对象思路方法或者WEB.PB将请求结果传送给POWERBUILDER服务应用由POWERBUILDER服务应用执行相应代码并将结果返回给浏览器这就是WEB.PB工作原理它实际上是通过网关接口(CGI)来PB应用服务在HTML中有两个标签可以用来PB应用服务:窗体< FORM >和锚点< A >前者是在窗体命令中激活个PB应用后者是通过超链接来指向PB应用

2、系统运行环境

合肥市电信局网管中心目前运行电话网网管系统有本地网集中监控和维护系统和长途网管系统其中本地网网管系统采用安徽省自行开发套系统服务器为ALPHA 4000小型机操作系统为Digital Unix 64,长途网管采用邮电部电信总局统开发ROMA系统操作系统为SCO UNIX数据库均为SYBASE SQL SERVER我们另外采用了台IBM Netfinity 3000作为WEB服务器采用Microsoft Windows NT 4.0为操作系统 IIS4.0提供WWW服务在安装POWERBUILDER 6.0时选择自定义安装然后选择Internet Tools中WEB.PB选项即可

3、配置IIS服务器

Microsoft Internet Information Server(IIS)主目录下有个子目录\scrips,这是IIS用来存放CGI目录如果需要使用标准CGI则将\PB6\IT\BIN\PBCGI60.EXE复制到这个目录下即可如果使用ISAPI接口则需要复制文件是pbisa60.dll

但是为了保证服务能正常运行还必须自行查看IIS服务目录映像表其步骤如下:

1、确定IIS已经安装且运行正常

2、运行Internet Service Manager

3、选择需要安装配置Web服务(IIS支持多种服务并能够对多台计算机服务进行管理)

4、从菜单条中选择属性菜单下服务属性菜单项

5、选择Directories页

6、确定有个别名为/scripts/目录项(别名即虚拟目录名)

7、选择/scripts/并单击Properties按钮

8、确定Execute是在Access组中唯被选中项目(在这个目录中不允许客户机执行读写操作)

9、如果对属性作了修改选择OK进行保存

10、如果没有/scripts目录可以添加

4、编辑hosts 和 services 文件

采用任何个文本编辑器编辑这两个文件通常hosts文件在c:\winnt\system32\driver\etc目录下添加下面行:

134.65.5.212 HFSA

其中HFSA为主机名134.65.5.212为IP地址

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

myapp 100015/tcp

意义在于将所创立PB服务添加到Windows服务注册文件中使用TCP/IP协议应用都需要使用个端口服务应用将在这个端口布置个监听这个能够捕捉到任何发送到这个端口请求并将请求输送到应用比如HTTP协议协议使用端口80FTP采用TCP端口21这里指定myapp 使用TCP端口100015获取个可用端口思路方法是把上端口号加1即可

5、查询目标

SQL SERVER名: "HFWG2_SYB"

数据库名:exsydb

表名和表结构:s12_a010007

字段名 数据类型 长度 字段意义
Ofcname char 10 局名
Date 4 日期
Time small 2 时间
Name char 16 路由名称
Ncit Int 4 电路数
Ncct float 8 可用电路数
Pegs 4 呼叫次数
Seiz Int 4 占用次数
Succ 4 成功次数
Answ Int 4 应答次数
Serl float 8 占用话务量
Rerl float 8 通话话务量
Retries 4 中继重选次数
no_answ 4 久叫不应次数
cong_dist 4 对端拥塞次数
ls_busy 4 对端市话忙次数
ts_busy 4 对端长话忙次数


要求在浏览器中输入日期和时间对表s12_a010007查询并在网页中反映出结果

6、创建Powerbuilder应用

1、 新建个应用(myapp)

2、 新建个窗口(w_1)定义个instance 变量(i_server_transport)

3、 单击应用画板中script按钮为myapp应用open事件编写代码如下:

open(w_1)

4、 打开窗口w_1为它open事件编写代码如下

li_ListenReturnCode
/*创建传输对象并设置其属性*/
i_server_transport = CREATE transport
i_server_transport.driver="winsock" //采用TCP/IP协议
i_server_transport.application="myapp" //应用名称
i_server_transport.location="HFSA" //本地连接
/*监听客户并返回状态值*/
li_ListenReturnCode= i_server_transport.Listen
(li_ListenReturnCode< >0) then
MessageBox("服务器监听出错"&
"服务器不能正常进行监听:~r~n~r~n"+&
"请确保当前TCP/IP服务不能被其它埠占据以及"+&
"myapp 10015/tcp",stopsign!)
Halt
End

5、 为w_1close事件编写代码如下:

i_server_transport.stopListening //停止在埠监听
DESTORY i_server_transport //从内存中清除传输对象
close(parent)

6、 创建个datawindow(d_zy),查询条件为日期、时间这是POWERBUILDER特色的这里就不作详细解释

7、 定义个用户对象u_web_ct1,并定义个UserObject Function f_get_2a01(eger date,eger time)

其代码如下:

datastore ds_tf
ls_html
li_rowcount
//连接数据库
sqlca.DBMS="SYC Sybase 10 CTLIB"
sqlca.Database="exsydb"
sqlca.UserId="sa"
sqlca.Dbpass=""
sqlca.LogPass=""
sqlca.ServerName="HFWG2_SYB"
sqlca.LogId="sa"
sqlca.DbParm=""


connect using sqlca;

sqlca.sqlcode < > 0 then
Messagebox(" ","connect error")
end

ds_tf = create datastore

ds_tf.dataobject="d_a01"
ds_tf.SetTransObject(sqlca)
li_rowcount=ds_tf.Retrieve(date,time)

li_rowcount=0 then
disconnect using sqlca;
"no record!"
li_rowcount< 0 then
disconnect using sqlca;
Return "retrieve failure!"
end


ls_html = ds_tf.Object.DataWindow.data.HTMLTable


destroy ds_tf
disconnect using sqlca;

ls_html


7、 使用

1、在主页中添加如下代码:

< form name="form1" method="post"
action="http://134.65.5.212/scripts/
pbcgi60.exe/ernet/u_web_ct1/f_get_2a01?" >

< font size="-3" >< b >< p >日期: < input type="text" name=
"date" size="20" > < /b >< /font >< /p >
< p >< b >< font size="-7" >时间: < /font >< font size="-3" >
< input type="text" name="time" size="20" > < /font >< /b >< /p >
< p >< input type="submit" name="Submit" value="Submit" > < /p >
< /form >

2、运行myapp应用,启动浏览器输入日期和时间结果如下:



8、小结

由于POWERBUILDER是专业级数据库开发工具可以不受数据库种类和平台限制采用它WEB.PB技术来进行Internet/Intranet开发能够将开发者精力都集中到业务逻辑实现上而不是花费大量时间去考虑和数据库连接问题这种基于浏览器/服务器结构应用优势在于系统维护简单几乎所有工作都集中在WEB服务器上大大减少了对多个客户端维护工作另外由于能够将运算任务合理地分布在浏览器和服务器的间整个系统运行费用也将大大降低
Tags:  powerbuilder是什么 powerbuilder9.0 powerbuilder powerbuilder

延伸阅读

最新评论

发表评论