web前端

位置:IT落伍者 >> web前端 >> 浏览文章

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


发布日期:2018年04月22日
 
利用POWERBUILDER开发数据库的WEB查询

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服务器上大大减少了对多个客户端的维护工作另外由于能够将运算任务合理地分布在浏览器和服务器之间整个系统运行的费用也将大大降低

上一篇:使用PowerDesigner 9.5创建Web服务

下一篇:怎样用PowerBuilder开发WEB应用