PowerBuilder数据管道

数据管道可以在不同的数据库表之间移动数据。这种数据移动可以在同一个数据库或不同数据库甚至不同DBMS中进行。

使用方法有两种:

1.作为实用工具给开发者,在数据管道画板中交互式地在不同的表之间移动数据。

2.在应用程序中实现数据移动,用来开发一个需在不同表之间移动数据的应用程序。

在2的使用方法中,有5个步骤:创建所需对象,执行初始化操作,启动数据管道,处理行错误,执行结束操作。

创建对象

需要建立管道对象,支撑用户对象,窗口三个对象。

1.创建管道对象

定义应用程序需执行的数据定义及数据访问。

点击File中的New,打开Database选项卡,选择Data Pipeline,选择数据源(上半部分)和数据库连接(下班部分),进入Quick Select选项框。选择 表和列,并建立规则,点击OK即可完成简单的数据管道。

2.创建支撑用户对象

创建一个继承PowerBuilder管道系统对象的用户对象。

管道对象属性、事件以及函数:

属性        DataObject、RowsRead、RowsWritten、RowsInError、Syntax

事件        PipeStart、PipeMeter、PipeEnd

函数        Start、Repair、Cancel

在New对话框的Object选项卡中选择Standdard Class选项,到Select Standard Class Type对话框。选取一个内置系统对象,用户对象将继承这个系统对象。

选择pipeline并点击OK,出现用户对象画板工作区。

根据需要对用户对象进行修改,并进行保存。

3.创建窗口

提供一个用户界面,可以与管道对象进行交互,对管道操作进行监控。

1.启动管道操作2.发生错误时,显示并修复错误3.在必要时终止管道操作。

还可以在窗口中增添其他控件,如命令按钮或静态文本或其他数据窗口控件等等。

初始化操作

为应用程序处理管道运行做准备。

具体步骤如下:

1.连接源数据库及目标数据库

准备两个事务对象,一个连接源数据库,一个连接目标数据库。

写法示范:

itrans_soure = CREATE transaction        创建一个新的事务对象实例

CONNECT USING itrans_source;        建立连接

2.创建一个支撑用户对象实例

必须先为这个用户对象声明一个变量,如叫u_sales_pipe_logistics:

u sales pipe_logistics   iuo_pipe_logistics

再在用户事件中创建一个实例,将它保存在变量中。

3.定义所使用的管道对象

管道操作

1.启动管道

Start函数

2.管道处理监控

除了测试Staart函数的返回值,还可以用显示管道操作统计数据的方法。步骤如下:

用户对象画板中打开支撑用户对象,出现用户对象画板工作区。声明几个类型为静态文本的实例变量。编写支撑用户对象的PipeMeter事件脚本并保存,然后关闭用户对象画板。在窗口画板中打开处理管道操作的窗口,让用户在出现的窗口画板工作区中编辑所打开的窗口。在窗口中加入几个静态文本控件,编辑窗口的Open事件,要注意对应,完成之后保存然后关闭。

3.中止管道运行

防止用户误启动或者执行时间比预期长要取消时使用。

用Cancel函数,执行后需要对返回值进行测试。

ps:中止时,前面传输的部分是否提交到目标表取决于建立管道对象时定义的Commit属性。

4.向数据库提交更新操作

根据该管道对象定义的Commit属性提交,不需要开发者加COMMIT语句。

Commit属性值为ALL时,撤销传输的所有行;为一个指定行数n时,传输n行就执行一次COMMIT语句,会提交语句传输的所有行。

处理行错误

修复错误行两种方法:

1.在数据窗口控件直接编辑错误行。

2.执行应用程序代码进行错误行代替。

错误修复后,用Repair函数把修复行提交给目标表(调用+测试)。

若还是有错误,可能时以下3种情况:

1.已被修改但仍有错的行

2.未被修改

3.Cancel函数还未写入或Cancel操作使源表中恢复的行。

放弃错误行:

1.使用Reset函数放弃所有错误行。

2.使用RowaDiscard函数放弃某一行或多行指定行。

结束操作

释放管道操作开始时获得的资源。

1.清除创建的支撑用户对象实例

2.关闭源数据库和目标数据库的连接

3.清除源事务对象实例和目标事务对象实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值