Database 版 (精华区)
发信人: rhine (System analysis), 信区: Database
标 题: pb7.0中实现jaguar gts组件开发
发信站: 哈工大紫丁香 (2001年07月23日14:14:40 星期一), 站内信件
pb7.0中实现jaguar gts组件开发
广州金宇恒科技有限公司 陈纪山
01-6-25 下午 05:42:09
------------------------------------------------------------------------
--------
pb7.0 与jaguar cts(组件事务服务器) 做到了紧密集成,只需要编写少量代码
,就可以建立基于jaguar cts 的组件,同时jaguar cts本身内置pb虚拟机,使用
pb7.0编写的组件可以直接与jaguar cts进行高效通信。这样pb组件通过jaguar
cts与后台数据库建立连接,方便地实现基于三层体系结构的开发。
建立jaguar 组件
在pb中有三种方法可以建立jaguar组件:
1、start wizard:建立一个新的应用、新的用户对象和新的工程;
2、object wizard:在已有的应用的基础上建立一个新的用户对象和工程;
3、project wizard:从已有的用户对象中生成一个jaguar组件。
你可以根据需要选择以上三种方法之一来建立jaguar组件。建立jaguar组件一般有
如下四步:
1、使用start wizard(或者object wizard、project wizard)来建立一个新的应
用、新的用户对象和新的工程;
2、为用户对象加入方法、事件和实例变量;
3、测试组件;
4、发布组件至jaguar cts。
建立jaguar客户端应用
为了实现客户端与jaguar组件的通信,需按如下步骤建立jaguar客户端应用:
1、使用jaguar connection object wizard建立一个连接对象;
2、使用jaguar proxy wizard来建立一个工程,使用该工程产生代理对象;
3、建立窗口、菜单、脚本来做一个客户端图形用户界面;
4、编写适当的代码来创建jaguar组件实例并且访问它的方法(通过代理对象);
5、测试客户端应用;
6、发布客户端应用。
实 例
本实例通过pb7.0建立一个jaguar cts组件,然后发布至jaguar cts服务器,该服
务器通过odbc数据源(本例数据源名为eas demo db v3)与后台数据库(本例使用
sybase adaptive anywhere数据库,数据库名为:easdemodb.db) 相连,客户端代
理程序通过jaguar cts组件对后台数据库进行访问,比如查询employee表中的雇员
情况等,从而实现一个典型的pb三层体系结构应用。具体做法如下:
1.建立jaguar cts组件
启动pb7.0,选择file-->new,弹出一个对话框,选择start wizard页,双击启动
jaguar componet图标,在向导的指引下,可以一步一步生成一个新的应用、组件
、工程,在此分别命名为jag_app、n_jag_cmp、p_jag_prj。
打开library画笔,打开jag_app所在的库文件,双击打开 n_jag_cmp用户对象,在
declare栏声明如下实例变量:
protected:
datastore ids_emp //声明一个不可视的数据存储对象
在n_jag_cmp用户对象的constructor事件中,建立数据库连接,代码如下:
// profile eas demo db v3
sqlca.dbms = “odbc"
sqlca.database = “eas demo db v3"
sqlca.autocommit = false
sqlca.dbparm = “connectstring=
‘dsn=eas demo db v3;uid=dba;pwd=sql'"
//
connect using sqlca;
//创建数据存储对象,并作必要设置
ids_emp=create datastore
ids_emp.dataobject=“d_emp"
ids_emp.settransobject(sqlca)
在n_jag_cmp用户对象的destructor事件中,做如下清理工作来释放资源:
destroy ids_emp
disconnect using sqlca;
为n_jag_cmp用户对象增加一个函数uf_employee,该函数访问类型为public,返回
值为blob类型,无参数,函数体如下:
blob lblb_data
ids_emp.retrieve()
ids_emp.getfullstate(lblb_data)
return lblb_data
创建一数据窗口对象,名为:d_emp,该数据窗口显示风格为grid,语法如下:
select “employee".“emp_id",
“employee".“emp_fname",
“employee".“emp_lname",
“employee".“birth_date",
“employee".“salary",
“employee".“sex"
from “employee"
关闭除了library之外的所有画笔,双击p_jag_prj工程对象打开工程画笔,点击快
捷工具栏的build图标,编译并将该组件发布至指定的jaguar cts 服务器。
2.建立客户端应用
选择file-->new, 弹出一个对话框,双击start wizard 页的application图标,
创建一个新的pbl库和一个应用对象,pbl库名为:jag_client.pbl,应用对象名称
为:jag_client_app。
选择file-->new, 弹出一个对话框,双击object页的 connection object
wizard图标,创建一个连接对象,连接对象名称为jag_connection,注意在
specify connectivity画面选择连接选项时务必选择requires jaguar
connection一项。指定 jaguar cts 服务器所在的机器名,缺省的端口为9000,缺
省的登录id为jagadmin。选择相应包的名称(即建立jaguar cts组件时所指定的包
的名称)。按照向导指示完成余下的步骤。
选择file-->new, 弹出一个对话框,双击project页的jaguar proxy wizard图标
创建一个代理工程对象,名称为p_jag_client_prg,按上述同样的方法指定jaguar
cts服务器和包的参数。
创建完毕后,双击p_jag_client_prg对象,打开工程画笔,点击快捷工具栏的
build图标,联编p_jag_client_prg对象。这时你就会发现在jag_client.pbl 中多
了一个n_jag_cmp代理对象。
选择file-->new, 弹出一个对话框,双击object页的 window图标,创建一个窗口
对象,对象名称为:w_proxy,保存该对象。
在w_proxy中增加如下控件:一个数据窗口控件,控件名为:dw_employee,一个按
钮控件,控件名为cb_retrieve,文本为:提取数据。
在w_proxy的declare 栏位声明一个连接实例和一个组件实例,代码如下:
jag_connection my_conn
n_jag_cmp my_comp
在w_proxy的open事件中实例化连接对象,并连接至jaguar cts,代码如下:
my_conn = create jag_connection
my_conn.connecttoserver()
在w_proxy的close事件中断开连接并清理连接对象,代码如下:
my_conn.disconnectserver()
destroy my_conn
在cb_retrieve按钮的clicked事件中加入如下代码:
blob lblb_data
if not isvalid(my_comp) then
my_conn.createinstance(my_comp)
//创建组件实例
end if
lblb_data=my_comp.uf_employee()
//调用组件的方法
dw_employee.setfullstate(lblb_data)
//将所需的数据展示于数据窗口中
最后编译并运行客户端程序,会得到如下运行结果:
本实例在windows nt4.0(sp4)、adaptive server anywhere6.0、jaguar cts3.0、
pb7.0下运行通过。
--
海纳百川,
有容乃大,
壁立千尺,
无欲则刚。
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.226.249]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.991毫秒