PowerBuilder实用教程第15章 数据管道

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

第15章 数据管道
——数据管道对象的的属性
数据管道的属性
数据管道对象的属性共有六个,反映了当前使用的数据管道对象、语法、数据管道运行情况等 信息,这六个属性分别是 “ClassDefinition”“DataObject”“RowsInError”“RowsRead”“RowsWritten”和 “Syntax”。 其中: (1)“DataObject”属性的数据类型为“String”,用于保存数据管道对象名(在数据库画板 中创建的对象),其作用与数据窗口控件的同名属性的作用十分相似,该属性指定与数据管道对象 相关联的数据管道对象名。 (2)“RowsInError”的数据类型为“Long”,它指示数据管道运行过程中发现的错误个数 (如存在键值重复的行等)。 (3)“RowsRead”的数据类型为“Long”,它指示数据管道运行过程中当前已经读取的行 数。 (4)“RowsWritten”的数据类型为“Long”,它指示数据管道运行过程中当前已经写入的 行数。 (5)“Syntax”属性的数据类型为“String”,保存用于创建数据管道对象的语法(在数据管 道画板中创建的对象)。
可以更改目标表的列名 可以更改目标表列的类型 默认值与源表的对应列相同 可以更改目标表列的宽度。默认值与源表的对应列相 同 可以更改。默认值与源表的对应列相同 可以更改。默认值与源表的对应列相同
在数据库画板中创建数据管道
数据管道操作方式(Options)见表15.3。
名 称
Create-Add Table Replace-Drop/Add Table Refresh-Delete/Insert Rows Append-Insert Rows Update-Update/Insert Rows
(2)Destructor: 在数据管道用户对象 删除时触发。
(4)PipeMeter:每次读或写 一块数据时触发,设计数据管 道对象时定义的“Commit” 参数的大小决定了块的大小。
目录
03
数据管道的函数
1.Start()函数 2.Cancel()函数 3.Repair()函数
1.Start()函数
创建数据管道对象
若数据源“Data Source”选择“Quick Select”,则源表只能选择一个,如图15.8所示。 选择要复制的列,然后单击“OK”按钮,将出现如图15.3所示的定义数据管道窗口。
目录
03
打开和修改数据管道
打开和修改数据管道
保存数据管道后,可以再次打开和修改。在PowerBuilder主窗口的工具栏中单击“Open”, 出现标题为“Open”的窗口,选择目标和PBL源文件后,在对象类型“Objects of Type”中选择 “Pipelines”,在对象“Object”中选择要打开的数据管道,如图15.9所示。
含 义
在目标数据库中创建指定的目标表。如果目标数据库中已经存在同名的表, 则执行时将显示一个对话框,提醒用户表已经存在 在目标数据库中创建指定的目标表。当目标数据库中已经存在同名表时, 将首先删除该表,然后创建 将删除目标数据库中指定目标表中的所有数据,然后插入从源表选择的数 据。要求目标表已经存在。若目标表不存在,则操作将失败 保留目标表中的原有数据,然后插入从源表选择的数据
在数据库画板中创建数据管道
在如图15.3所示的定义数据管道界面中,各选择项的含义见表15.2。
名 称 Table Options Commit Key Max Errors Extended Attributes Source Name Source Type Destination Name Type Key Width Dec Nulls Initial Value Default Value 目标表名 选择管道操作方式 选择多少条记录作为一个事务提交 目标表的主键名称 选择允许出现的最多错误个数 是否复制表的扩展属性 源表列名 源表列的类型 目标表列名 目标表列的类型 该列是否为目标表的主键 目标表列的宽度 目标表列的小数位 设置目标表列的Null值 指定目标表列的初始值 指定目标表列的默认值 含 义 说 明 默认名:源表名+"_copy" 在下拉列表框中选择管道操作方式,有五种选择,见 表15.3 默认值为100 可以修改目标表的主键名称 在复制的过程中错误个数达到MaxErrors时,将停止复 制。默认值为100 默认为否
目录
02
创建数据管道对象
创建数据管道对象
可以像创建窗口Window、数据窗口对象DataWindow那样创建数据管道对象。在PowerBuilder主 窗口的工具栏中单击“New”,再单击“Database”选项页,如图15.6所示。选择“Data Pipeline”, 将出现标题为“New Data Pipeline”的窗口,如图15.7所示,选择数据源“Data Source”、源数据 库和目标数据库。
PowerBuilder实用教程(第5版)
第15章 数据管道
——创建数据管道
数据管道提供了在数据库内部、数据库之间,甚至不同的数据库管理系统之间快速复制数据 的简便途径。数据管道的工作过程如图15.1所示。
目录
01 在数据库画板中创建数据管道
在数据库画板中创建数据管道
进入数据库画板,在已连接的数据库中选择要复制的表,单击鼠标右键,出现一个弹出式选单, 如图15.2所示,选择“Data Pipeline”,开始创建数据管道,如图15.3所示。 此时,PowerBuilder界面左上方出现一个“Pipeline”工具栏,如图15.4所示。
在数据库画板中创建数据管道
其含义见表15.1。
图 标 含 义 保存数据管道 更改源数据库 说 明 若要在程序中使用数据管道,则必须在这里保存 查看与更改源数据库,默认为当前数据库
设置目标数据库
编辑SQL数据源 执行数据管道 返回
查看与更改当前目标数据库,默认为当前数据库
如果要为数据复制增加条件,则只能从这里进行。实际上这里就是一个Select语 句 立即执行数据复制 关闭数据管道定义,并决定是否保存
1.Start()函数
Start()函数返回一个Integer值指示数据管道的运行是否成功,返回值的意义如下: 1 函数执行成功 -1 打不开数据管道(如数据管道对象不存在) -2 列数太多 -3 要创建的表已经存在 -4 要增加数据的表不存在 -5 未建立与数据库的连接 -6 参数错误 -7 列不匹配 -8 访问源数据库的SQL语句有致命错误 -9 访问目标数据库的SQL语句有致命错误 -10 已经达到指定的最大错误数 -12 不正确的表语法 -13 需要关键字但未指定关键字 -15 数据管道已经在运行 -16 源数据库出错 -17 目标数据库出错 -18 目标数据库处于只读状态,不能写入数据
对源表中主键值与目标表中主键值匹配的行执行 UPDATE语句,修改目标 表中的相应行;对源表中主键值与目标表中主键值不匹配的行执行 INSERT语句,将相应行插入目标表中
在数据库画板中创建数据管道
数据管道定义好后,可以立即执行数据管道。单击工具栏图标 ,将立即执行数据管道操作。 还可以保存数据管道,以便再次使用或在编程中使用。在如图15.4中,单击保存图标 ,出现如 图15.5所示的窗口,在“Data Pipelines”中输入数据管道名,然后单击“OK”按钮。
目录
04
删除数据管道
删除数据管道
若要删除创建的数据管道,则需使用“Library”库管理器。打开“Library”库管理器,打开要 删除的数据管道所在的PBL,选择要删除的数据管道,单击鼠标右键,出现弹出式选单,选择 “Delete”将删除所选的数据管道,如图15.10所示。
PowerBuilder实用教程(第5版)
目录
02
数据管道的事件
数据管道的属性
数据管道有五个预定义事件,在创建数据管道用户对象时,可以根据应用程序的需要定义自 己的用户事件。预定义的事件有如下五种。
(1)Constructor: 在数据管道用户对象 创建时触发。 (3)PipeStart:开 始执行Start()或 Repair()函数时触发。 (5)PipeEnd: Start()或Repair()函 数执行结束时触发。
2.Cancel()函数
在数据管道运行过程中,执行Cancel()函数后将终止数据管道的执行。
格式: pipelineobject.Cancel() 该函数执行成功时返回1,失败时返回0。
3.Repair()函数
数据管道运行后,如果某些行不能传送到目标数据库,就产生了错误,出错的行显示在与数据 管道对象相关联的数据窗口中,用户在数据窗口中修改了数据后,使用Repair()函数,将修改结果传 送到目标数据库。 格式: pipelineobject.Repair ( desttrans ) 其中,pipelineobject是包含要被执行数据管道对象的数据管道用户对象名称;desttrans是连 接到目标数据库的事务对象名。 Repair()函数返回值的意义如下: 1 函数执行成功 -5 未建立与数据库的连接 -6 参数错误 -9 访问目标数据库的SQL语句有致命错误 -10 已经达到指定的最大错误数 -12 不正确的表语法 -15 数据管道已经在运行 -17 目标数据库出错 -18 目标数据库处于只读状态,不能写入数据
和单行文本框“sle_error”(显示管道操作出错的行数),数据窗口控件“dw_1”(显示管道操
作的运行状况)。使用第5章的方法在本地创建一个数据库“JSJ”,注意,只要创建好数据源即 可,暂时不要在其中建立表,之后通过执行数据管道会自动建立表并复制数据。
Start()函数执行数据管道对象,将数据从源表按SQL SELECT语句指定的要求复制到目标表中。 格式: pipelineobject.Start ( sourcetrans, desttrans,errordw [arg1, arg2, ..., argn]) 其中: (1)pipelineobject是包含要被执行数据管道对象的数据管道用户对象名称。 (2)sourcetrans是连接到源数据库的事务对象名,可以是默认的事务对象SQLCA,也可以 是用应用程序创建的事务对象。 (3)desttrans是连接到目标数据库的事务对象名,可以是默认的事务对象SQLCA,也可以是 用应用程序创建的事务对象。 (4)errordw是一个数据窗口控件名,该控件用于显示数据管道运行过程中出现的错误。 (5)arg1, arg2, …, argn是可选参数,对应于定义数据管道数据源时SELECT语句所需的检 索参数。
数据管道编程实例
本例介绍一个数据管道应用的完整实例,运行时的界面如图15.11所示。
数据管道编程实例
具有步骤如下。 (1)创建一个“pipelines.pbl”文件,其“ApplicationObject”命名为“pipelines”。再创建 窗口“w_pipe”,在“w_pipe”中,创建一个组框“gb_1”、两个单选按钮“rb_down”(表示 从服务器数据库下载数据到本地数据库)和“rb_up”(表示将本地数据库数据上传到服务器数据 库以更新数据),“开始”命令按钮“cb_ok”(表示开始执行数据管道操作),“取消”命令按 钮“cb_cancel”(表示取消正在进行的管道操作),“返回”命令按钮“cb_return”(表示返 回),静态文本“st_read”和单行文本框“sle_read”(显示管道操作已读的行数),静态文本 “st_written”和单行文本框“sle_written”(显示管道操作已写的行数),静态文本“st_error”
PowerBuilder实用教程(第5版)
第15章 数据管道
——数据管道编程实例
数据管道编程实例
【例】数据管道应用。
在程序中使用数据管道的基本步骤如下。
(1)创建数据管道对象,如果不存在的话。 (2)定义“Pipeline”的标准类用户对象(或在代码中定义“Pipeline”对象实例)。 (3)创建窗口,在窗口中放置一个数据窗口控件。 (4)编写代码。 (5)处理行错误。 (6)结束管道操作。
相关文档
最新文档