分享
 
 
 

PB7.0中实现Jaguar GTS组件开发

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

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下运行通过。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有