pb11+webservice开发分布式三层应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

pb+webservice开发分布式三层应用

(演示或测试例程代码:WebserviceExample.rar)

一、 WEBSERVICE服务端的开发

1、新建立一个workspace工作区

先择FILE菜单下的NEW,选择标签页‘Workspace’新建一个工作区。

点击后出现下图

在文件名处输入工作区的名称,假设我们的工作区名为webserver,单击保存按钮。这样工作区就建立成功了。

2、建立一个.net web service 应用点击FILE菜单下的NEW

选中.net web service 点击ok按钮

点击next按钮

点击next按钮

这里我们不修改pbl库名,当然你可以按你的意思修改库名,点击next 按钮。一直点Next按钮直到出现

这里需要注意一点,如果你当前的IIS端口,不是默认的80 ,假设是7000的话,那么在localhost后面要加上“:7000” ,。再点击一次next直到finish按钮。

3、连接数据库(建立测试环境所用文件CreateENV.sql)

我们先来建立一个数据库的连接以为后期的webservice服务提供一个连接。

打开系统生成的n_webservice对像

在其constructor里面写上

SQLCA.DBMS = "ODBC"

SQLCA.AutoCommit = False

SQLCA.DBParm = "ConnectString='DSN=localdbora8;UID=scott;PWD=tiger',PBCatalogOwner='scott'"

我是拷贝的

这里你可以修改成你的数据库连接参数。

数据库连接建立完成后,我们再建立一个uf_retrieve的方法用来提取数据库数据

long ll_row,ll_returnrow

string ls_oldsql,ls_newsql,ls_err_a,ls_error

int i,LI_WHERE

datastore ds1

ds1 = create datastore

connect using sqlca;

if SQLCA.SQLCode <> 0 then

p_ref_returnerr="连接数据库出错,请检查数据库连接参数。SQLCA.sqlcode=" & + string(sqlca.sqlcode) + "~r~n"+string(sqlca.DBParm) + "~r~n"+string(sqlca.sqlerrtext) return -1////创建数据窗口出错

end if

if len(p_dw_syntax) < 100 then

ds1.dataobject=trim(p_dw_syntax)

//// 我的想法是通过可以传递datawindow名称,而不是几K的Datawindow语法

//// 来减轻网络通讯量(考虑到通用性,此想法可免了)

// if NOT IsV alid(d_emp) then

// disconnect using sqlca;

p_ref_returnerr="服务端加载数据窗口出错! '"+trim(p_dw_syntax)+"'不存在?" // return -1////创建数据窗口出错

// end if

else

if ds1.create(p_dw_syntax,ls_error)<>1 then

disconnect using sqlca;

p_ref_returnerr="服务端重建数据窗口出错! "+ls_error

return -1////创建数据窗口出错

end if

end if

int li_a

li_a=ds1.settransobject(sqlca)

if li_a<>1 then

disconnect using sqlca;

p_ref_returnerr="服务端设置数据存储事务出错!"

return -1///设置对像事物出错

end if

ls_oldsql=ds1.getsqlselect()

if trim(ls_oldsql)='' or isnull(trim(ls_oldsql)) then

disconnect using sqlca;

p_ref_returnerr="传入的数据窗口对像sql语法为空!"

return -1 //取新窗口语法出错

end if

ls_newsql=ls_oldsql //先赋值

LI_WHERE = pos(UPPER(ls_oldsql),'WHERE',1)

IF trim(p_where_clause) <>'' then

IF LI_WHERE = 0 THEN

ls_newsql=ls_oldsql +' '+ p_where_clause

ELSE

ls_newsql=mid(ls_oldsql,1,LI_WHERE - 1 ) +' '+ p_where_clause END IF

END IF

if trim(ls_newsql)='' or isnull(trim(ls_newsql)) then

disconnect using sqlca;

p_ref_returnerr="连结后的sql语法为空!请检查传入的数据窗口对像sql语法。"

return -1 //取新窗口语法出错

end if

if Match ( ls_newsql, '"' ) then

disconnect using sqlca;

p_ref_returnerr="重组后的sql语法出错,数据窗口语法不能包含双引号!"+ls_newsql return -1//设置新窗口语法出错

elseif not Match ( upper(ls_newsql), "WHERE" ) then

disconnect using sqlca;

p_ref_returnerr="重组后的sql语法出错,数据窗口必须包含一个where条件"

相关文档
最新文档