《PB程序设计》第11章 数据管道
PB11简介PPT课件
2021/7/22
23
谢谢大家!
个人观点供参考,欢迎讨论
2021/7/22
17
2.9 应用程序开发及发布
创建一个应用调试 利用开发工具编译成Dll或PBD 发布EXE、Dll(PBD) + Pb的支持动态库,类
似于Java的虚拟机
2021/7/22
18
3.1 Dw数窗的详细介绍
不同风格数窗使用介绍(12种风格) 如何设计数窗 数窗检索数据,正常检索、带参数检索 数窗更新数据 数窗的数据源介绍(无数据源、SQL语句组
PowerBuilder是著名的数据库应用开发工具生产 厂商PowerSoft公司推出的产品(PowerSoft现已 被数据库厂商Sybase所收购),它完全按照客 户机/服务器体系结构研制设计,在客户机/服 务器结构中,它使用在客户机中,作为数据库 应用程序的开发工具而存在。由于PowerBuilder 采用了面向对象和可视化技术,提供可视化的 应用开发环境,使得我们利用PowerBuilder,可 以方便快捷地开发出利用后台服务器中的数据 和数据库管理系统的数据库应用程序。
*.Pbl,*.PBD,*.Pbw,*.pbt,*.pbr,*.dll的介绍。
2021/7/22
15
2.7 PB开发工具与Sql语句
嵌入式SQL语句 4种动态游标 代码中直接写Sql语句 数窗与视图 数窗与存储过程
2021/7/22
16
2.8 应用程序开发及发布
创建一个应用调试 利用开发工具编译成Dll或PBD 发布EXE、Dll(PBD) + Pb的支持动态库
2021/7/22
数据管道技术在系统数据备份与恢复中的应用
数据管道技术在系统数据备份与恢复中的应用摘要:介绍了PowerBuilder中数据管道的功能、使用方法,并结合具体实例介绍了利用数据管道技术在管理信息系统中实现系统数据备份和恢复的处理方法。
关键词:PowerBuilder;数据管道;数据备份;数据恢复1 数据管道技术概述1.1 数据管道的功能PowerBuilder中的数据管道对象提供了在数据库内部、数据库之间、甚至不同的数据库管理系统之间快速转移数据的简便途径。
利用数据管道可以实现将一个或多个表中的数据转移到相同的DBMS或不同的DBMS中,可以创建一个与原表相同结构的表,即复制表结构,可以删除目标表及数据后重建目标表和数据,还可以只把最新数据传送到目标表中。
除了传送一般的数据(比如数值型、字符型等)外,数据管道还可以在数据库之间传送图像、声音之类的大二进制对象(Blob型数据)。
1.2 数据管道的使用方法在使用数据管道对象时,通常有两种方法来实现数据的转移:一是直接通过数据管道画板创建数据管道对象并执行;二是通过数据管道画板创建数据管道对象并保存,然后在程序中通过代码执行数据管道。
在PowerBuilder中创建数据管道对象时,必须指定数据管道对象的以下属性:①连接的源数据库;②连接的目标数据库;③复制数据的源表;④存放数据的目标表;⑤数据管道操作的类型;⑥是否把表的扩展属性一起传送到目标数据库中。
1.3 在应用程序使用数据管道当一个数据管道对象被创建后,在应用程序中使用该数据管道时,需要创建数据管道用户对象来继承数据管道对象的属性、事件和函数,定制出满足需要的标准类用户对象,然后使用标准类用户对象的属性、函数等来编写事件处理程序。
因此,在应用程序中使用数据管道,一般需要以下几个步骤:①创建所需的各个数据管道对象并保存;②创建数据管道用户对象;③建立应用程序窗口,并在相应的事件过程中通过代码来执行数据管道,实现数据的传送;④执行结束操作,关闭数据管道并断开与源数据库和目标数据库的连接。
在PowerBuilder程序中使用数据管道
在PowerBuilder程序中使用数据管道
刘君
【期刊名称】《智能计算机与应用》
【年(卷),期】2008(000)002
【摘要】通过学生就业信息管理系统对各系学生就业数据汇总来介绍在程序中使用数据管道的方法.
【总页数】2页(P65-66)
【作者】刘君
【作者单位】辽宁信息职业技术学院,辽阳,111000
【正文语种】中文
【中图分类】TP312
【相关文献】
1.游标在开发PowerBuilder应用程序中的使用 [J], 王旭;秦军
2.在PowerBuilder中利用数据管道进行数据转换 [J], 张丽芳
3.PowerBuilder数据管道的程序设计技术 [J], 吴兰君
4.PowerBuilder使用入门第三讲在应用程序中使用数据库 [J], 孙洪林
5.Powerbuilder数据管道技术在多数据库数据传输中的应用 [J], 幸勇;伍永刚;魏守平;张初旺;张世钦
因版权原因,仅展示原文概要,查看原文内容请购买。
PB程序设计实验指导书
《PB程序设计(汽车学院)》实验指导书适用专业:物流管理课程代码: 8245060学时: 20 学分:编写单位:交通与汽车工程学院编写人:曾传华审核人:骆勇审批人:孙仁云目录实验一定义和使用数据库..................................................................................................... - 2 - 实验二POWERBUILDER管理信息系统开发 .................................................................. - 26 - 主要参考文献........................................................................................................................... - 58 -实验一定义和使用数据库一、实验目的和任务1.数据库画笔及其应用2.数据库的创建和删除3.数据库的基本操作4.数据表的创建和管理5.PowerBuilder的数据库接口二、实验仪器、设备及材料1.CPUPIII1000HZ,内存64MB RAM,1G硬盘空间计算机;2.安装POWERBUILDER9.0;3.安装SQL SERVER2000。
三、实验原理利用POWERBUILDER9.0数据库画板等对数据库进行操作。
四、实验步骤1.使用SQL SERVER创建和管理Mydb数据库;2.在student数据库添加相应数据表:表 1.1 用户信息表Myuser的列定义表 1.2 院系信息表College的列定义表 1.3 专业信息表Specialty表 1.4 课程信息表Course表 1.5 学生信息表Student表 1.6 成绩信息表Sreport3.各表之间的相互关系●专业表和院系表:存在隐式关系,3位专业编号的前两位由院系编号决定。
pb“动态”数据管道的应用
三、“动态”数据管道的应用前面已将数据管道的应用进行了简单说明,下面将介绍如何在程序中修改和调整数据管道。
注意到支撑用户对象中有一个Syntax属性,该属性的数据类型为String,保存用于创建数据管道对象的语法。
如果将Syntax输出,将是类似与下面的文本:PIPELINE(source_connect=Book,destination_connect=Desi,type=create,commit=100,errors=100,keyname=" person_x")SOURCE(name="person",COLUMN(type=varchar,name="person_no",dbtype="char(8)",key=yes,nulls_allowed= no)COLUMN(type=varchar,name="dept_no",dbtype="char(3)",nulls_allowed=no)……如果利用字符串函数(比如Mid()、Pos()、Len())对Syntax属性进行操作,应用程序可以动态修改数据管道对象语法,从而实现不同的要求。
例如将上面文本中的“type=create”改为“type=update”就改变了数据管道的操作方式。
现在我们知道了动态修改数据管道的方法,那么我们能否不建立数据管道对象而只应用支撑用户对象实现管道操作吗?答案是肯定的,方法是通过构造符合Pipeline语法的文本(有关pipeline的语法可以把在画笔中定义的Pipeline对象导成文本文件进行分析),将此文本赋值给Syntax属性,这样不必定义数据管道对象仍然可以进行管道操作。
下面是笔者编写的一个从Forpro数据表向Oracle数据库复制数据的函数,由于应用了“动态”数据管道,无需在画笔中创建数据管道对象,从而实现任意表的数据传递。
PB数据管道
[PB]-数据管道数据管道提供了一种不同数据库之间传递数据和(或)表结构的方法。
数据管道对象要完成数据管道的功能需要提供如下内容:需要数据源和目标数据库,并能够和这两个数据库正常联接需要源数据库中的哪些表;需要复制到目标数据库中的什么位置;要完成哪些管道操作;发生错误的频率;允许发生错误的最大数;需要包括的扩充特性。
数据管道画板New —> DataBase —> Data Pipeline数据管道选项:Table:目标表名Key:目标表的主键名(非主键字段名)Options:管道选项Create:添加表、Replace:替换已存在的表、Refresh:删除或者插入行、Append:插入行、Update:更新或者插入行Max Errors:允许的最大错误数Commit:被提交的事务处理内的行数Extended Attributes:扩充特性是否管道化Design->Database Bolb 处理Blob类型的字段如果在目标数据库中只创建数据表而不拷贝原来的数据,可以通过定义永远不成立的检索条件来实现,比如2<1作为检索条件。
数据管道用户对象New —> PB Object —> Standard Class —> OK —> 选中pipeline —> OK属性:DataObject:指定使用哪个数据管道该属性是数据管道最重要的一个属性,有些类似于数据窗口控件的DataObject 属性。
此属性只能在运行时设定,虽然在用户对象画板中也提供了设置该属性的地方,但这好像不起作用。
下面是一个为管道用户对象设定DataObject的例子:iuo_pipeline.DataObject="p_copy_employee"数据窗口控件的DataObject属性如果在脚本运行时动态修改,则形成发行文件时,在执行文件中不能包括相应的数据窗口对象。
PB数据管道的实用程序设计技术
PB数据管道的实用程序设计技术在PowerBuilder中我们可以通过数据管道,在不同数据库表之间移动数据,实现一个或多个表中的数据拷贝到一个新的或已经存在的目标数据表中。
这种操作可以在不同数据库,甚至不同的DBMS之间进行。
PowerBuilder提供了强大的数据管道技术(Data Pipeline)。
我们通常使用的有如下两种方式:直接使用pb画板中提供的实用工具在应用程序中实现数据移动本文着重结合具体实例讲述在应用程序中如何实现数据管道技术。
在应用程序中使用数据管道有以下五个基本步骤:创建应用程序所需对象;执行数据管道初始化操作;启动数据管道;处理程序运行中移动数据的错误行;执行数据移动完毕后的收尾操作。
创建应用程序所需对象为了在应用程序中实现数据管道,需建立以下几个不同的对象:数据管道对象、支撑用户对象、窗口对象。
创建数据管道对象这是为实现管道功能所必须的,可在Powerbuilder提供的pipeline 画板中创建并定义它的特征。
示例在pipeline画板中创建应用程序需要的数据管道对象pipe_user_table01。
在此着重说明Commit和Max Errors文本框中参数的意义。
Commit中选中ALL:当所有行在管道操作完成后再向数据库提交,如果操作过程中被终止,则撤消对表的所有操作。
Max Errors文本框中选中NO LIMIT:不论有多少行出错都不终止管道操作。
此处视实际编程需要可选其它数字。
创建支撑用户对象为了提供对属性、事件及函数的支持,需创建一个继承PB管道系统对象的用户对象,通过这个用户对象来管理管道操作。
创建过程如下:第一步,打开用户对象画板,单击New按钮,在New User Object对话框中选择Class 组框中的Standard作为用户对象类型。
第二步,在Select Standard Class Type对话框中选取继承pipeline内置系统对象。
PB数据管道
[PB]-数据管道数据管道提供了一种不同数据库之间传递数据和(或)表结构的方法。
数据管道对象要完成数据管道的功能需要提供如下内容:需要数据源和目标数据库,并能够和这两个数据库正常联接需要源数据库中的哪些表;需要复制到目标数据库中的什么位置;要完成哪些管道操作;发生错误的频率;允许发生错误的最大数;需要包括的扩充特性。
数据管道画板New —> DataBase —> Data Pipeline数据管道选项:Table:目标表名Key:目标表的主键名(非主键字段名)Options:管道选项Create:添加表、Replace:替换已存在的表、Refresh:删除或者插入行、Append:插入行、Update:更新或者插入行Max Errors:允许的最大错误数Commit:被提交的事务处理内的行数Extended Attributes:扩充特性是否管道化Design->Database Bolb 处理Blob类型的字段如果在目标数据库中只创建数据表而不拷贝原来的数据,可以通过定义永远不成立的检索条件来实现,比如2<1作为检索条件。
数据管道用户对象New —> PB Object —> Standard Class —> OK —> 选中pipeline —> OK属性:DataObject:指定使用哪个数据管道该属性是数据管道最重要的一个属性,有些类似于数据窗口控件的DataObject 属性。
此属性只能在运行时设定,虽然在用户对象画板中也提供了设置该属性的地方,但这好像不起作用。
下面是一个为管道用户对象设定DataObject的例子:iuo_pipeline.DataObject="p_copy_employee"数据窗口控件的DataObject属性如果在脚本运行时动态修改,则形成发行文件时,在执行文件中不能包括相应的数据窗口对象。
PB11简介
2.5 窗口、用户对象之间的消息传递
Pb8.Pdf用户手册中1.2.7的详细介绍 PostEvent 参看Pb8.pdf用户手册中3.1.9小节详 解 邮寄执行 随机空闲执行 TriggerEvent 参看PB8.Pdf用户手册中3.1.16小节 详解 立即执行 按消息队列顺序执行 使用Send消息传递(窗口之间的通讯)参看 Pb8.Pdf中2.14.12小节 窗体打开可以通过OpenwithParm传递参数 响应窗体可以通过ClosewithReturn 截取返回值 全局消息对象Message 的三个常用属性。 DoubleParm、StringParm 、PowerObjectParm
pro_treeviewclass 非可视化的用户对象 uo_treeview 可视化的用户对象
2.4.4 如何使用用户对象
可视化用户对象
所谓可视用户对象就是可重用的具有某种行为的一个或一 组控件。换句话说,也就是为了重复调用,将逻辑封装成 一个整体。
类用户对象
它也具有非常广泛的应用领域。比方说,在制作一个商用数据 库软件的时候,经常会使用某些商业规则对数据进行重复地计 算和处理。如果我们定义一个用户对象,由它来管理这套数据 处理的办法,那就会使程序的设计工作方便很多。类用户对象 也叫非可视化用户对象,与可视化用户对象用法基本类似。在 Pb11中来看一下。
2.9 应用程序开发及发布
创建一个应用调试 利用开发工具编译成Dll或PBD 发布EXE、Dll(PBD) + Pb的支持动态库,类 似于Java的虚拟机
3.1 Dw数窗的详细介绍
不同风格数窗使用介绍(12种风格) 如何设计数窗 数窗检索数据,正常检索、带参数检索 数窗更新数据 数窗的数据源介绍(无数据源、SQL语句组 合、视图、存储过程) 数窗四个缓冲区的介绍 Primary,Delete,Filter, Original(隐式的)
基于PB数据管道的异构数据库转换系统设计与实现
性, 灵活性差。 笔者通过对 D t P en a i le对 象和 标准 类 P en a pi i le pi 进行分析 , 出了一种 新的使 用数据管道 的方 法 , 提 允许 用户 根据需要设 置源数 据与 目标 数据库 , 根据 用户的
选择 在程序 中动态创建 数据管道 , 后执行数 据管道 最 进行数据转换与迁移。这种 方法灵活性高 , 用性强。 通
通过 用户管道对象的 S r ) 数执 行数据管道 对象 , tt 函 a(
在企业 中并存 但各 自为 政、 息不 能 互通 的 局面。如 信
何最大 限度地 保护 用户资源 , 实现异 构数据库 之间 的 连接 、 数据交换和数据 共享 , 充分使 用异构 数据源中 的
大量信息 , 是应 用程序开 发中不可忽视 的问题。
源数据 库
— ]/
口
卜 、 目标 — ] / 数据库 —
\ 、
— — —
— — — —
一一
,一
图 1 异构数据库 转换 系统模 型
一
个 用于数据转 换与迁移 的智能对象 , 它提供 了在数
通过 O B D C可 以实现对 多种 D MS的数据 进行转 B 换。 目前绝大多数关系数据库都提 供 了 O B D C驱 动程
31 系统设计模型 .
通过 O B D C为统一的数据库访问接 口,
同时连 接 源 数 据 源 和 目的 数 据 源 , 用 利 PweB ie 的数据 管道 , o rul r d 根据一定 的转 换 规则进行 用户定 制 的数 据转 换 与迁 移 , 该 模式的结构 如图 1 所示。
据库 内部 、 数据库 之间甚至数据库 管理系统 ( B L) D NS 之
PB11数据库技术及应用
PocketBuilder的Sybase® PB®11.5版本已投入使用。为开发带来很多 帮助包括:增强的.NET支持、创建具有丰富可视化效果的数据驱动型应 用程序的全新DataWindow创新功能、
8.1 PowerBuilder简介
n (2)增强的数据库支持
n 支持MS SQL Server 2008和Oracle 11g。 n (3)DataWindow 和美化增强 n 1)支持PNG n 2)菜单、工具栏、树状图、DataWindows、图片、图片按钮
3)透明度 n 4)背景:渐变梯度、图片 n 5)控件:渐变梯度、透明度(以百分比表示)、工具提示 n 6)列:Rich text 编辑格式 n 7)图形:三维图形风格(也在独立图形控件中)。包括使用 3D技术渲染饼状图、柱状图、条状图、线形图和范围图表,
8.1 PowerBuilder简介
n 能极大地提高开发效率的全新本地关系型数据库管理系统(RDBMS)驱动 器、带有应用程序服务器接口,允许第三方应用程序服务器直接在PB整合 式开发环境中进行相关部署和简化的安全系统等。
n 4.其他新功能
n 此外,PB新版本增强了.NET的互操作性、提供了创新的DataWindow ,以及其他大量的新功能,使工作变得更简单、应用程序更稳健,也提高 了开发速度。PB将继续利用现有代码、技术投资和专门技术,整合最新的 开发模式,用于解决业务和IT问题。 n (1)增强的.NET支持 n 1)Strong-named assemblies; n 2)对原语和枚举类的函数调用; n 3)静态成员访问; n 4)对.NET的功能性、支持度和互操作性随着Windows的普及而强化 ,所以PB不断进行更新,与Microsoft最新技术保持同步。
PB学习总结
PB学习总结信142李嘉星学号:20143140219 1.第十一章数据库应用基础1.1.数据库接口1.1.1.PB提供了两类数据接口:i)ODBC接口、ii)专用接口1.1.1.1.ODBC为连接物理数据库而提供的一种标准接口。
应用ODBC的程序不依赖于DBMS(数据库管理系统)。
优点:能以统一的方法处理所有的数据库。
多个ODBC数据源可以对应同一个数据库。
1.2.数据库操作1.2.1.PB开发过程中,数据库操作有创建数据库、定义ODBC数据源、配置DB(开发时需要,运行时不需要)、连接数据库。
1.2.2.Database画板不能修改项目类型。
1.3.事务对象1.3.1.用途:在PB中与数据库通信,在应用程序中使用嵌入式SQL使用数据窗口访问数据库。
1.3.2.注意:事务与事务对象并不是同一概念。
1.3.2.1.事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。
(离散成组的逻辑单元)1.3.2.2.事务对象:驻留在内存中,拥有用于连接数据库以及从数据库中得到反馈数据的所有信息。
1.3.3.应用程序与数据库的所有通信需要通过事务对象来完成。
系统缺省的事务对象为SQLCA,作用域为全局,新创建该对象用CONNECT语句。
1.3.3.1.事务管理语句COMMIT(提交)、ROLLACK(回滚)、CONNECT(连接)、DISCONNECT(断开)。
1.3.3.1.1.CONNECT(连接)语法格式CONNECT{USING transaction_object};1.3.3.1.2.DISCONNECT(断开)语法格式。
DISCONNECT{USING transaction_object};1.3.3.1.3.ROLLACK(回滚)语法格式ROLLACK{USING transaction_object};MIT(提交)语法格式COMMIT{USING transaction_object};1.4.SQL语句1.4.1.特点1.4.1.1.SQL语句以;作为结束标志1.4.1.2.SQL语句中可以使用PB中的变量(变量前加:)1.4.1.3.每次PB只能处理一条返回结果;返回多条时要应用游标或窗口技术1.4.1.4.静态游标不能放在循环语句中1.4.2.增删改查1.4.2.1.查(Select)SELECt col1,col2,···,colnINTO var1,var2,···,varnFROM table_name{WHERE condition_expression}{USINGtransaction_object };1.4.2.2.增(Insert)INSERT INTO table_name SET col1=v1 {,col2=v2,···,coln=vn}VALUSE(v1,v2,···,vn){USINGtransaction_object };1.4.2.3.改(Update)UPDATEtable_name {col1,col2,···,coln}{WHERE condition_expression}{USING transaction_object };1.4.2.4.删(Delect)DELECT FROM table_name{WHERE condition_expression}{USING transaction_object };1.4.3.注意1.4.3.1.相关操作作为一个事务,出现错误则全部回滚1.4.3.2.同一数据连续更新最后一次提交,则只更新了一次1.4.3.3.断开前系统会进行一次提交1.5.小结:2.数据库窗口对象2.1.数据窗口对象的创建2.1.1.显示风格2.1.1.1.Grid(网格)数据的行与列之间通过网格线分隔,每一个数据项都位于其中一个网格中。
PB数据管道技术实现系统数据自动迁移的应用
行的代码 : 初始化事务对 象并连接数据库, 创建标准类 用户对象实例 , 将数据 管道对 象与标准类用 户对象实 例联系起 来 , 启动数据管道 。 首先为控制数据 管道运行
窗 口(_et定义两个实例变量 , w ts ) 见表 1 所列。 表 1 运行 窗 口的两个实例变量
在控制数据管道 运行窗口的命令控件 “ 启动数据
图 1 技 术 流 程
( 用数据管道画笔创建数据管道对象 一) 以进口付汇表ipy 1 如图2 — a0 ( 所示 ) 为例 , ieis Pp—p 是为将进 口付汇数据库中的ipy 1 中数据结转开发 — a0表
数据库中ip y 1 — a0 表而定义的一个数据管道对象 , 两张
表的结构相 同, 均含有企 业代码 、 企业名称 、 所属外汇
陉 制数据管 道对象窗口的名称 为w t t 当建好控 _e 。 s
裾管道运行 的窗 口后, 在应用 中使 用数据管 道所 基本对 象就 都准备就 绪了, 接下来要 做 的是 应用
冶 工作 。 化 ( ) 键 代 码 实现 四 关
二. B P 数据管道技术实际效果 以及应用展望
在应用程 序中使 用P 数据 管道技术 , B 能够 比较快
^ J _ b k 鼬 ∞ m
哪1 ( 由 ) 1 q 帕 ■喃 口 辄 嘲 I 口 日 ■
6 l 2 l
口 口 团 口
图2 Pp —p 数据 管道对 象 ie i s
一
、
相关操作步骤
操作方式选择 “ p a —net o s , U dt Isr R w ” 除了具有追 a
为了在程序 中控制数据管道 运行 , 动态完成数 据 表的复制, 需要完成如下所述的设计与编程步骤 , 如图
PB动态数据管道技术实用编程foxpro
PB“动态”数据管道技术实用编程一、引言使用过PowerBuilder(以下简称PB)的编程人员都知道,PB允许用户在程序运行过程中应用数据窗口方法或属性表达式查看或修改数据窗口对象的属性,还可以动态的创建数据窗口对象,并将这种在程序运行过程中被修改或创建的数据窗口对象称为动态数据窗口对象。
同样,PB提供的数据管道技术也可以在程序运行时进行修改与调整,笔者称其为“动态”数据管道。
二、数据管道技术PB为在不同数据库表之间移动数据提供了功能强劲的数据管道技术(Data Pipeline)。
通过数据管道,我们可以实现将一个或多个源表中的数据复制到一个新的或已经存在的目标表中,这种数据转移不仅可以在同一个数据库中进行,而且可以跨数据库,甚至在不同的DBMS之间进行。
数据管道有两种使用方式:一是在数据管道画笔中定义了数据管道后直接运行数据管道,这种方式方便了开发人员开发和测试应用程序,例如,它可以把服务器中的数据下载到本地机,然后不依赖于服务器地进行前期开发工作;二是在应用程序中通过编写代码使用数据管道,这种方式提供了灵活运用数据管道的手段。
本文着重讲述第二种方式,即在应用程序中实现数据管道技术,下面按五个步骤进行说明:1、创建应用程序所需对象为了在应用程序中实现数据管道,需建立管道对象和支撑用户对象。
创建管道对象:管道对象中定义了应用程序需执行的数据定义及数据访问,可在Powerbuilder提供的pipeline画笔中创建并定义它的特征(如图)。
在数据管道画笔工作区上部指定数据管道选项,这些选项决定了将以何种方式运行管道。
选项包括:“Table”:指定目的表的名称““Key”:修改目的表主键的名称“Max Errors”:定义允许出现的最多错误个数“Commit”:定义将多少条记录作为一个事务提交“Extended Attributes”:选择此复选框后,在复制数据的同时也复制表的扩展属性(这些属性保存在PowerBuilder资源库中)。
Pb11编写webservice数据库连接性能研究
Pb是很好的开发数据库应用的软件,pb8以前可以用其自带的Transport 对象实现三层结构,但pb8以后简单好用的只有easerver,但据说这是很贵的软件,就是盗版也不好找。
Pb11可直接将nvo发布为webservice,这对pb熟手来说是一个很好的事情,可是,习惯了C/S结构开发的思路,用webservice,数据库连接会不会过于频繁?用pb内部的数据库连接方式有没有连接池?Webservice连接性能到底怎样?等等问题,是每个从C/S编程转向B/S编程或采取三层结构编程的人都会涉及到的。
下面就以pb11写webservicepb8调用对其连接池及性能进行测试。
1、单客户端、不连接数据库、pb写的webservice的响应速度测试方案:Pb11 webservice函数of_adder(),累加当前秒钟值 10000 次的结果。
客户端pb8,在不同电脑上,调用1000次。
Webservice代码如下图。
测试结果:耗时25秒,无数据库连接会话。
2、单客户端、连接数据库、pb的webservice的响应速度测试方案1:函数f_connect()连接数据库,函数of_getdbhandle()返回当前连接数据库事务对象的句柄,客户端保持webservice连接(每次调用不重新初始化),webservice 保持数据库连接不断开。
客户端pb8,在不同电脑上,调用100次。
客户端代码如下:string ls_wsdllong i, jlong numssetpointer(hourglass!)//连接系统库SQLCA.DBMS = "IN7 INFORMIX-7"SQLCA.Database = "sysmaster"erId = "informix"SQLCA.DBPass = wf_sa_pwd()SQLCA.ServerName = "192.168.0.1@server1"SQLCA.AutoCommit = FalseSQLCA.DBParm = "CommitOnDisconnect='No',DisableBind=1"connect using sqlca ;if sqlca.sqlcode <> 0 thenmessagebox('错误',"连接系统库失败",stopsign!)returnend iftime t1,t2t1 = now()st_times.text = ''//循环调用for j = 1 to long(sle_cs.text)yield()if not isvalid(w_1) then exitst_nums.text = string(j)//未创建 webservice连接则创建 ( ws为窗口实例变量 )if not isvalid(ws) thenws = Create oleobjecti = ws.ConnectToNewObject("MSSOAP.SoapClient30")if i <> 0 thendestroy wsmessagebox('提示 ','请检查是否安装了SoapSDK3.0和XML4.0', exclamation!)returnend ifws.ClientProperty("ServerHTTPRequest",true)ls_wsdl = profilestring("soap.ini", "soap", "url", "")ws.mssoapinit(ls_wsdl)ws.ConnectorProperty("Timeout",180000)end if//webservice 方法中每次连接数据库且用完即断开st_dbhandle.text = ws.of_getdbhandle() //webservice方法连接数据库时的dbhandle()//st_dbhandle.text = ws.of_adder()//从 sysmaster 库中查看 webservice 中每次连接是否都释放了,SessionID 是否保持一个// myvpc 为webservice所在主机名(web服务器主机名)select count(*) into :nums from syssessions where hostname = 'myvpc' using sqlca ;if not isvalid(w_1) then exitif sqlca.sqlcode =0 thenst_nums_dq.text = string(nums) //循环第j次时连接数据库的sid数if long(st_nums_min.text) > nums then st_nums_min.text = string(nums) if long(st_nums_max.text) < nums then st_nums_max.text = string(nums) end ifif not isvalid(w_1) then exitnextt2 = now()st_times.text = string(SecondsAfter(t1, t2))if isvalid(sqlca) thendisconnect using sqlca ;end ifif isvalid(ws) thenws.DisconnectObject ( )destroy wsend ifwebservice代码如下图:测试结果:耗时81秒,最大SID数100,每次dbhandle均不同。
PB基本操作手册
第1章PB通过专用驱动连接Oracle 前提:安装Oracle数据库客户端,配置客户端服务名,连接Oracle服务器运行PB后点击打开如下界面,进行配置:自定义:数据库在PB中的名称——Profile Name填入:A、Oracle客户端服务名——Server(PB6.5需要在服务名前加@)B、user/password(数据库登录名/密码)在System选项卡,配置Table Owner(很重要,否则可能无法连接)第2章PB通过JDBC连接数据库前提:安装JDK,并配置JDBC将MYSQL的JDBC连接包(mysql-connector-java-5.0.7-bin.jar)放入JA V A 安装目录的Lib目录下,并配置Class_Path类路径(使JA V A可以找到这个包)。
运行PB后点击打开如下界面,进行配置:在PB中新建一个JDBC连接自定义:JDBC在PB中的名称——Profile Name填入:A、JDBC驱动程序类名(存在与mysql-connector-java-5.0.7-bin.jar包中)——Data SourceB、URL(包含MYSQL的服务器IP、Port、DB--数据库名:hao)——URLC、username/password(数据库登录名/密码)这样PB就可以连接到JDBC,并访问远程IP地址上的数据库服务器了。
第3章PB通过ODBC数据源连接数据库前提:配置ODBC数据源(例如:配置SQL Server数据源),连接数据库服务器(例如:连接SQL Server数据库服务器)运行PB后点击打开如下界面,进行配置:在PB中新建一个ODBC连接自定义:ODBC数据源在PB中的名称——Profile Name 填入:A、选择配置好的ODBC 数据源——Data SourceB、user/password(数据库登录名/密码)切换到System选项卡,填写Table Owner(就是登录名)这样PB就可以连接到ODBC,并访问远程数据库服务器了。
PB数据管道
使用数据管道实现数据的自动迁移和备份摘要:针对MIS系统的开发和使用过程中数据的备份和迁移问题,提出了解决问题的基本思路和方案,详细阐述了方案实施过程中涉及的方法和技巧,并对使用PowerBuild开发MIS系统的一般思路作了简要的介绍和说明。
关键词:MIS;PowerBuild;数据管道;数据迁移;数据备份分类号:TP311.521.引言在MIS系统的开发中,PowerBuild7.0以其强大的数据处理能力、丰富的数据库接口和数据访问能力、支持三层或多层应用结构的开发和对Internet的有力支持,成为目前领先的Client/Server 开发工具。
在MIS系统的开发和使用过程中,常常需要对数据进行备份和迁移。
当应用系统开发成功后,系统从开发环境向运行环境迁移时,当旧的系统需要升级时,当新系统为了兼容原有系统使用时,当自动进行数据的备份和恢复时,或者为了提取数据样本时,开发者或用户可以通过手工的方法完成操作,但某些情况下,开发者应该考虑在应用程序中实现数据的自动迁移。
PowerBuild的数据管道是实现这种自动移动的有效方法之一。
在PowerBuild中,数据管道可以实现数据表间数据的移动,它可以将数据从一个或多个源表(也可以是存储过程)中输送到一个新的或现有的目标表中,这些数据表可以在同一个数据库中,也可以在不同的数据库中,甚至可以在不同的数据库管理系统(DBMS)中。
2.实现方法通过应用程序实现数据的自动迁移,要求被操作的源和目标数据库已经存在,并且数据迁移的策略(数据管道)也应建立。
在此基础上,通过应用程序使用数据管道,实现数据的自动迁移。
2.1实现步骤一般说来,在应用程序中使用数据管道有五个基本步骤:(1)创建对象创建数据管道对象、管道对象的支撑用户对象和一个窗口对象。
(2)初始化操作创建两个事务对象的实例,分别连接源和目的数据库;创建管道对象的支撑用户对象的一个实例,并初始化为已经建立的数据管道对象。
PB 11第11章 自定义函数和结构
图11-2定义全局函数的属性 定义全局函数的属性
11.1.1创建自定义全局函数 创建自定义全局函数
参数传递方式有三种: 参数传递方式有三种: Value:值传递---将实际参数的值传递给函数参数 : Reference:地址传递---把实际参数的地址传递给函数,此时,如果 函数修改了形式参数的值,那么实际参数的值也就被修改了。 Readonly:地址传递---把实际参数的地址传递给函数,不过不允许 : 修改参数的值。 要 增 加 或 删 除 参 数 , 可 在 图 11-2 中 右 击 , 出 现 弹 出 式 菜 单 。 Add Parameter增加参数,Insert Parameter插入参数,Delete Parameter 删除参数
[access] FUNCTION return_type function_name([REF][type1 arg1,。。。,typen ,。。。, argn]) LIBRARY lib_name
用Subroutine的格式:
[access] SUBROUTINE sub_name([REF][type1 arg1 , 。 。 。 , typen argn]) LIBRARY lib_name
11.1.1创建自定义全局函数 创建自定义全局函数
Object页的Function,双击Function项或点击OK按钮,进入全局函 数的定义。 在图中,Function Name项中输入函数名、Return Type下拉框中选择 函数返回值的类型、Argument Name中输入函数参数名、Argument Type下拉框中选择函数参数类型、PassBy下拉框中选择参数传递方 式。
《PB程序设计》第11章 数据管道
返回本节 录
11.2 数据管道画板的使用
(4)分别在Source Connection(源连接) 列表和Destination Connection(目的连接) 列表中选择源数据库、目的数据库,在Data Source中选择数据源,然后单击“OK”按钮, 系统根据所选数据源的不同,出现不同的画 面,按照与定义数据窗口数据标 源相似的方 法定义数据源;定义数据源之后,单击工具栏 上如图11¯4所示图标
返回本节 录
11.2.1 创建数据管道
(2)Cancel()函数 在数据管道运行过程中,执行Cancel()函 数后将终止数据管道的执行。Cancel()函 数的语法格式为: PipelineObject.Cancel() 该函数执行成功时返回1,失败时返回-1
返回本节 录
11.2.1 创建数据管道
返回本节 录
11.2.1 创建数据管道
6.数据管道的函数 数据管道对象有8个函数,其中 ClassName()、GetParent()、 PostEvent()、TriggerEvent()、TypeOf ()与其他对象相应函数的意义相同,在此 不再重复。下面介绍数据管道对象特有的3个 函数Start()、Repair()、Cancel()。
返回本节 录
11.2.2 数据管道的修改
在数据管道对象中添加Blob列的操作步骤: (1)从Design菜单中选择“Database Blob” 命令选项,打开“Database Binary.Text Large Object”对话框,如图11¯17所示。
返回本节 录
11.2.2 数据管道的修改
返回本节 录
11.2 数据管道画板的使用
(3)在New Data Pipeline对话框中,全部选项分 成了两部分:Data Source组框用于选择数据源,这 些数据源的作用与创建数据窗口时的数据源的作用 完全相同,它们生成指定的SQL SELECT语 句;Database Connections组框用于指定提取数据的 源表所在数据库所对应的数据库描述文件和目的表 所在数据库所对应的数据库描述文件,如果所需的 数据库描述文件没有在列表框中列出,那么必须使 用数据库画板创建相应的数据库描述文件。
pb11数据窗口新特性
图9
结论
我们希望通过本文能给你一个良好的印象:PowerBuilder 11.5 中的数据窗口能为你做什 么。不要止步于只阅读此文,在你的已有项目上尝试一下,甚至在你刚刚着手的新项目上尝 试一下。实验是有风险的,这些特性会持继地演变,你如何使用它们将决定它们如何演变。
关于作者
Fredrick Koh、Gao Hong、Ni Hai-bo、Gan Ya-qin 和 Liang Liang 是 PowerBuilder 工程团队的 成员,他们负责构思、实现和测试 PowerBuilder 11.5 中数据窗口和图的新特性。
请注意渐变也有透明度组件。你可以在两端使用相同的颜色,不同的透明度,来进行渐 变。
图6 “比例(Scale)”、“焦点(Focus)”和“伸展(Spread)”属控制从一个渐变色到另一个
渐变色这个过程的各个不同方面。在此,我就此打住,不再多费口舌来描述这些属性了,当 你拿到你的 PowerBuilder 11.5 的拷贝时,你可以自己试试。11.5 中数据窗口的特性被设计为 “心想事成”(借用同事 Reed Shilts 的术语):你对程序做出某些修改,你就能立刻见到效 果。 数据窗口的背景
图5 “重复次数(Repetition Count)”属性(当“重复模式(Repetition)”属性被设置为“按
次数(By Count)”时起作用)重复渐变转换的过程(重复的次数由“重复次数”属性指定)。 图 6 展示了如果你对此属性使用表达式会得到什么样的效果。“重复单位长度(Repetition Unit Length)”属性类似,只不过它指定渐变转换的次数和每一次的长度。
文本透明度 字体选项卡拥有一个新的属性:透明度。
多格式文本编辑风格
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.数据库画板中创建数据管道 进入数据库画板,在已连接的数据库中选择 要复制的表,单击鼠标右键,出现一个弹出 式菜单,如图11¯7所示。
返回本节 录
11.2.1 创建数据管道
选择“Data Pipeline”创建数据管道,如图11¯8 所示
返回本节 录
11.2.1 创建数据管道
返回本节 返回本节 录 录
11.2.1 创建数据管道
在应用程序中使用数据管道的基本步骤为: (1)用数据管道画板创建数据管道对象,或 用用户对象画板创建继承Pipeline的标准类用 户对象。 (2)选择数据源(源表)
• 数据管道画板的源表(Source Table)部分显示 数据管道要从中提取数据的表的有关信息,包括:
(3)Repair()函数 数据管道运行后,如果某些行不能传送到 目的数据库,就产生了运行错误。出错的行 显示在与数据管道对象相关联的数据窗口中, 用户在数据窗口中修改了数据后,使用 Re¯pair()函数将修改结果传送到目的数据 库。Repair()函数的语法格式为: PipelineObject.Repair(Destinationtrans)
返回章目录
11.1 数据管道的功能
数据管道同样是PowerBuilder提供的一个对象,它 的使用方法有两种: ● 用数据管道画板创建数据管道对象,然后在数据 管道画板中运行数据管道对象。这种方式方便了开 发人员开发和测试应用程序。例如,可以把服务器 中的数据下载到本地机,然后不依赖于服务器进行 前期开发工作。 ● 用数据管道画板创建并保存数据管道对象,用用 户对象画板创建基于数据管道对象的用户对象,编 写需要的事件处理程序,在代码中运行管道。这种 方式提供了灵活运用数据管道的手段。
返回本节 录
11.2.2 数据管道的修改
保存数据管道后,可以再次打开和修改。在 Pow¯erBuilder主窗口的工具栏选择“Open”, 出现标题为Open的窗口,在对象类型 ObjectType中选择“Pipe¯lines”,在对象 “Object”中选择要打开的数据管道,如图 11¯16所示。单击“OK”按钮后,出现前面已 介绍过的界面。
返回本节 录
11.2.1 创建数据管道
6.数据管道的函数 数据管道对象有8个函数,其中 ClassName()、GetParent()、 PostEvent()、TriggerEvent()、TypeOf ()与其他对象相应函数的意义相同,在此 不再重复。下面介绍数据管道对象特有的3个 函数Start()、Repair()、Cancel()。
● 源表各列的列名。 ● 源表列的数据类型,括号中是列的宽度
返回本节 录
11.2.1 创建数据管道
(3)选择目的表 数据管道画板的目的表(Destination Table)部分定义数据管道要把数据传输到什 么地方。 (4)选择管道操作 在数据管道画板工作区上部指定数据管道 选项,这些选项决定了将以何种方式运行管 道。
返回本节 录
11.2数据管道画板的使用数据道 数据管道画板的使用数据道
11.2.1 创建数据管道 11.2.2 数据管道的修改 11.2.3 数据管道删除
返回章目录
11.2.1 创建数据管道
创建数据管道 在PowerBuilder中,创建数据 管道分两种情况: 一是在数据库画板中创建; 二是通过创建数据管道对象创建。 两者的不同之处在于:在数据库画板中创建的 数据管道默认源数据库和目标数据库相同;而 通过创建数据管道对象的方法,则首先要选 择源数据库和目标数据库,可以相同也可以 不同。
返回本节 录
11.2 数据管道画板的使用
(4)分别在Source Connection(源连接) 列表和Destination Connection(目的连接) 列表中选择源数据库、目的数据库,在Data Source中选择数据源,然后单击“OK”按钮, 系统根据所选数据源的不同,出现不同的画 面,按照与定义数据窗口数据标 源相似的方 法定义数据源;定义数据源之后,单击工具栏 上如图11¯4所示图标
返回本节 录
11.2 数据管道画板的使用
启动数据管道的操作步骤: (1)单击主工具栏的“New”按钮,打开 “New”对话框,在该对话框中激活 “Database”画板选项卡,如图11¯2所示。
返回本节 录
11.2 数据管道画板的使用
(2)双击Database选项卡的“Data Pipeline”图标,或者选择“Data Pipeline”图 标后单击“OK”按钮,系统打开“New Data Pipeline”对话框,如图11¯3所示
11.2.1 创建数据管道
(3)Syntax属性 Syntax的数据类型为String,用于保存创建 数据管道对象的语句(在数据管道画板中创 建的对象)。
返回本节 录
11.2.1 创建数据管道
5.数据管道的事件 数据管道有5个预定义事件,在创建数据管道用户对象时, 可以根据应用程序的需要定义自己的用户事件。预定义事件 的触发时机为: ● Constructor:在数据管道用户对象创建时触发。 ● Destructor:在数据管道用户对象删除时触发。 ● PipeStart:开始执行Start()或Repair()函数时触发。 ● PipeMeter:每次读或写一块数据时触发,设计数据管道对 象时定义的Commit参数的大小决定了块的大小。也就是说, 数据管道每执行完一个数据库事务时都会触发PipeMeter事 件。 ● PipeEnd:Start()或Repair()函数执行结束时触发
返回本节 录
11.2.1 创建数据管道
双击“Data Pipeline”图标打开如图11¯11所 示的窗口。选择数据源,源数据库和目的数 据库。若数据源选择QuickSelect,则源表只 能选择一个
返回本节 录
11.2.1 创建数据管道
如图11¯12所示。选择要复制的列。然后单击 “OK”按钮
返回本节 录
11.2.1 创建数据管道
3.创建数据管道用户对象 由于数据管道是非可视对象,数据管道用户 对象也是标准类用户对象,所以应按照创建 标准类用户对象的方法创建,其具体操作如 下: (1)单击主工具栏上的“New”按钮,打开 “New”对话框,并激活“PB Object”选项卡, 如图11¯14所示
返回本节 录
11.2.2 数据管道的修改
在数据管道对象中添加Blob列的操作步骤: (1)从Design菜单中选择“Database Blob” 命令选项,打开“Database Binary.Text Large Object”对话框,如图11¯17所示。
返回本节 录
11.2.2 数据管道的修改
返回本节 录
11.2 数据管道画板的使用
出现数据库连接画板,选中表右击出现菜单 后进行选择,系统打开数据管道画板,如图 11¯5所示
返回本节 录
11.2 数据管道画板的使用
数据管道画板工作区分为3个部分:位于左下 角的源表部分(这部分不能直接修改)、位 于右下角的目的表部分以及位于上部的数据 管道选项 经过上述操作后可以在数据管道画板中选择 源表及其列、 图11¯6 工具栏 定义目的表及 其列以及有关属性。数据管道画板的工具栏 除PowerBar主工具栏以外还有PainterBar工 具栏,在表11¯1中对PainterBar1工具栏工具 的用法作以简要说明,如图11¯6所示
返回本节 录
11.2.1 创建数据管道
(2)Cancel()函数 在数据管道运行过程中,执行Cancel()函 数后将终止数据管道的执行。Cancel()函 数的语法格式为: PipelineObject.Cancel() 该函数执行成功时返回1,失败时返回-1
返回本节 录
11.2.1 创建数据管道
第11章 数据管道
11.1 数据管道的功能 11.2数据管道画板的使用数据管道 数据管道画板的使用数据管道 11.3设计实例 设计实例 小结
返回总目录
11.1 数据管道的功能
数据管道提供了在数据库内部、数据库之 间,甚至不同的数据库管理系统之间快速 复制数据的功能。利用数据管道复制数据 的过程称之为灌入数据(Piping Data)。 数据管道可以完成普通方法难以完成的任 务
返回本节 录
11.2.1 创建数据管道
(1)Start()函数 Start()函数执行数据管道对象(这里所 说的数据管道对象是从系统对象Pipeline继承 得到的用户对象的一个属性),将数据从源 表按SQL SELECT语句指定的要求传送到目 的表中。Start()函数的语法格式为 PipelineObject.Start(Sourcetrans, Destinationtrans,ErrordataWindow{, arg1,arg2,…,argn})
返回本节 录
11.2 数据管道画板的使用
(3)在New Data Pipeline对话框中,全部选项分 成了两部分:Data Source组框用于选择数据源,这 些数据源的作用与创建数据窗口时的数据源的作用 完全相同,它们生成指定的SQL SELECT语 句;Database Connections组框用于指定提取数据的 源表所在数据库所对应的数据库描述文件和目的表 所在数据库所对应的数据库描述文件,如果所需的 数据库描述文件没有在列表框中列出,那么必须使 用数据库画板创建相应的数据库描述文件。
11.2.1 创建数据管道
(3)对于最简单的应用程序,可以直接保存 该用户对象。 (4)对于复杂些的应用程序,可以创建该用 户对象的实例变量、用户对象、编写所需的 事件处理程序和函数等,最终形成一个可重 用的用户对象,然后保存用户对象
返回本节 录
11.2.1 创建数据管道
4.数据管道用户对象的属性 数据管道用户对象的属性共有5个,反映了当前使用 的数据管道对象、语法、数据管道运行情况等信息。 下面详细介绍各属性的意义及作用 (1)DataObject属性 DataObject属性的数据类型为String,用于保存数据 管道对象名(在数据管道画板中创建的对象)。其 作用与数据窗口控件的同名属性的作用十分相似, 该属性指定与数据管道用户对象相关联的数据管道 对象名