263编号PowerBuilder技术讲座(摘自计算机世界报)

上传人:玩*** 文档编号:146249220 上传时间:2020-09-28 格式:PDF 页数:7 大小:149.82KB
返回 下载 相关 举报
263编号PowerBuilder技术讲座(摘自计算机世界报)_第1页
第1页 / 共7页
263编号PowerBuilder技术讲座(摘自计算机世界报)_第2页
第2页 / 共7页
263编号PowerBuilder技术讲座(摘自计算机世界报)_第3页
第3页 / 共7页
263编号PowerBuilder技术讲座(摘自计算机世界报)_第4页
第4页 / 共7页
263编号PowerBuilder技术讲座(摘自计算机世界报)_第5页
第5页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《263编号PowerBuilder技术讲座(摘自计算机世界报)》由会员分享,可在线阅读,更多相关《263编号PowerBuilder技术讲座(摘自计算机世界报)(7页珍藏版)》请在金锄头文库上搜索。

1、第 1 页 共 7 页 PowerBuilder 技术讲座(摘自计算机世界报)PowerBuilder 技术讲座(摘自计算机世界报) 整理:刘文东 时间:2013年9月4日0:13:09整理:刘文东 时间:2013年9月4日0:13:09 编者按:PowerBuilder 是美国 Powersoft 公司于90年代初推出的基于客户/服务器体系结构的面向基于客户/服务器体系结构的面向 对象对象的数据库开发工具。 该产品一上市即深受广大应用开发人员的喜爱,因此迅速占领市场,目前几乎 已发展成为前端工具的事实上的标准。 著名数据库软件公司 Sybase 收购 Powersoft 公司以 后,Powe

2、rBuilder 通过 Sybase 较早地介绍给了中国用户。 1994年 Powersoft 公司又在北京建立办事 处,PowerBuilder 便广泛为中国的用户接受和使用。 所开发的应用已广泛地应用于金融、证券、邮电、 商业等各个部门和各个领域,并发挥着巨大的作用。 据有关方面统计,PowerBuilder 在中国的市场占有 率目前已达40%左右。 Sybase 公司及其代理商在从事 PowerBuilder 的销售、培训和技术支持等服务时, 经常发现由于用户来自各个行业,专业背景不同,开发经验不同,再兼之国内的有关书籍和资料较少,因 此造成用户对 Power-Builder 的很多特性

3、不甚了解, 在进行深入开发时遇到了很多困难。鉴于此,开办 PowerBuilder 应用开发系列讲座,本讲座面向正在使用 PowerBuilder 进行开发的读者,主要讨论使用 PowerBuilder 进行数据库应用开发的经验和开发技巧。 PowerBuilder 应用开发系列讲座(1)PowerBuilder 应用开发系列讲座(1) 数据库的事务管理数据库的事务管理 在数据库中,所谓事务事务是指一组逻辑操作单元逻辑操作单元,使数据从一种状态变换到另一种状态使数据从一种状态变换到另一种状态。 为确保数据库 中数据的一致性一致性,数据的操纵操纵应当是离散的成组的逻辑离散的成组的逻辑单元:当它全

4、部完成时,数据的一致性可以保持,而 当这个单元中的一部分操作失败,整个事务应全部视为错误,所有从起始点以后的操作应全部回退到开 始状态。 对事务的操作事务的操作是这样进行的:先定义开始一个事务开始一个事务,然后对数据作修改操作修改操作,这时如果提交(COMMIT), 这些修改就永久地保存下来,如果回退(ROLLBACK),数据库管理系统将放弃您所作的所有修改而回到开始 事务时的状态。此外有些数据库支持事务的存储点事务的存储点(savepoint)这一概念:即在一个事务进程中任意一 点您都可以进行当前状态的存储,回退时只是回到你所设定的存储点,而不必退回全部的事务。 如果您的 事务可以分成几组对

5、数据库的修改,那就可以设置多个存储点,根据需要您可以回退到任意一个存储点, 而不使所有事务的修改数据全部丢失。 即在一个事务进程中任意一 点您都可以进行当前状态的存储,回退时只是回到你所设定的存储点,而不必退回全部的事务。 如果您的 事务可以分成几组对数据库的修改,那就可以设置多个存储点,根据需要您可以回退到任意一个存储点, 而不使所有事务的修改数据全部丢失。 正确地管理事务可以保证数据的完整性完整性,当您所做的工作全部完成和得到确认全部完成和得到确认之前,没有任何数据 物理地写进物理地写进数据库。让我们来看这样一个实例,我们有这样一个银行应用系统,前台使用者作出将储户甲 的一百元存款划归储户

6、乙帐下的操作;在后台的数据库中,这两个客户的记录分储在两张表中,当使用者 在屏幕上作出如上操作时,在后台需要对两张表进行修改。如果在数据库中对甲用户存款余款作减去一 百元修改后,对乙用户加一百元的操作修改却失败时,前一张表也必须回到修改前的状态,否则数据库的 内容不统一,甲储户白白损失一百元,信息必然是不正确的。因此进行事务管理是必须的。 传统地,我们认为一个事务包括了对一个或多个表的修改,而随着分布式数据库和数据仓库的发展, 事务可能包括了对一个或多个数据库的修改。 一个事务包括了对一个或多个表的修改,而随着分布式数据库和数据仓库的发展, 事务可能包括了对一个或多个数据库的修改。在上例中甲乙

7、两用户就可能是异地用户,信息分储在不同 地域的不同数据库中,上述的一个事务就涉及到了对不同数据库的操作。 PowerBuilder 中的事务管理PowerBuilder 中的事务管理 第 2 页 共 7 页 作为数据库的前台开发工具 Power-Builder前台开发工具 Power-Builder 支持事务管理事务管理的操作。 在 Power-Builder 中有一种称作 事务事务(transaction)的对象对象,这个对象是 PowerBuilder 应用与数据库的通讯通讯区域。PowerBuilder 在应用 开始时建立一个全局全局的事务对象 SQLCA事务对象 SQLCA。 由于大多

8、数的应用只用到一个数据库,所以一般开发者主要也只 用 SQLCA 作为与唯一数据库连接连接的事务对象。 PowerScript 中常用的事务管理的语句有四个:COMMIT,ROLLBACK,CONNECT,DISCONNECT。 当您需要应用与数据库建立连接时使用CONNECT这一操作命令,取消连接时执行DISCONNECT,这两个命令 一般分别用在应用的开始和结束应用的开始和结束,也就是 Appli-cation 的 Open 和 Close 事件Appli-cation 的 Open 和 Close 事件中。 当一个事务的数据库修改都成功地完成后,修改须提交给数据库,COM-MIT 语句是

9、一个旧事务结束和 一个新事务开始的界线。 一个旧事务结束和 一个新事务开始的界线。在修改被提交前,数据库的数据并没有被真正地修改,这些修改被保留在某个工 作区,只有作修改的用户才能看到这些被修改后的值,提交之后,则所有的用户就都可以看到新值了。 在事务的进程中发生某些错误,或者在操作中出于种种原因打算中止事务,须用 ROLLBACK 命令回退回退 事务,如果已作的操作不用 ROLLBACK 命令取消,这些操作必将错误地作为下一个事务的一部分而导致数 据库的混乱。 如果您使用的是多窗口的应用,却只用一个事务对象多窗口的应用,却只用一个事务对象,就应格外注意 ROLL-BACK 和 COMMIT

10、会影响事 务的逻辑一致性逻辑一致性。在某个窗口执行的这两个指令会使其他窗口应用中所进行到一半的工作提交或回退。 在多用户系统中,修改和提交的时间越接近,提交成功的可能性就越高。因为一个事务中所有的 SQL 语句全部执行成功而提交却失败全部执行成功而提交却失败是完全可能发生的,例如在您的事务过程中,另一个用户修改了数据并 提交,这很可能使您作出的修改无效,这时 COMMIT 将失败,您必须回退这一事务的全部。 事务对象的 AutoCommit 属性事务对象的 AutoCommit 属性 事务对象有一个 AutoCom-mit 的属性AutoCom-mit 的属性可以使开发者简化简化对事务管理的操

11、作,这一布尔型布尔型的属性可以 用 TRUE 或 FALSETRUE 或 FALSE 来对其赋值。 当其为真时,PowerBuilder 不通过其他额外的交互就将您的 SQL 语句传输 给后台数据库,而且执行完毕自动提交。 当然,您可以设置 AutoCommit 属性设置 AutoCommit 属性为假(缺省值),使用 COMMIT 或 ROLLBACK 这样的关键词提交或回 退 提交或回 退事务。在大多数应用中,一部分的数据库操作是要成组提交成组提交的,而另一些则不用。因此我们可以利用 AutoCommit 的特性来确定事务的起点,当我们把 AutoCommit 的属性设为 False 时,

12、系统设定此时为事务 的起点。当 AutoCommit 设为真时,系统自动消取这一事务。因此你可以先把 AutoCommit 设为真,当您需 要开始一个事务时,将其置为 false,此刻即为事务起始点。 PowerBuilder 内部这种事务管理的最大优点是方便方便。您不去考虑整个事务,而只需把您所作的修改 提交或滚回即可。 但是方便与可控性总是矛盾的,在Power-Builder中没有存储点和嵌套事务管理存储点和嵌套事务管理的机制, 即使您所使用的数据库数据库支持这些特性,在 PowerBuilder 中却无法得以体现。不过在普通的应用中,存储 点和嵌套事务管理并不是必须的,一般的事务管理足以

13、够用。 用数据库的事务管理指令实现完全控制用数据库的事务管理指令实现完全控制 上述的事务管理方式事务管理方式尽管简单方便,但是在某些应用中,我们也的确需要利用所用的数据库系统的 嵌套事务和存储点的特性 数据库系统的 嵌套事务和存储点的特性,而 PowerBuilder 内部的事务管理没有提供这样的功能,您必须自己设计。 自己进行事务管理的方式是直接使用数据库本身的事务指令。当您使用自己的管理方式时,就应使 Power-Builder 停止停止管理事务,即设置 Auto-Commit 为 TRUE,系统内部就不会自动建构事务处理的命令设置 Auto-Commit 为 TRUE,系统内部就不会自动

14、建构事务处理的命令 了了。 实现人工事务人工事务管理的方式是采用 EXECUTE IMMEDIATE 这条 PowerBuilder 指令来执行任意的数据库操 作。你所需做的是将数据库指令编辑成一个字符串,您可以执行任何的数据定义语句如建表、建主键、 第 3 页 共 7 页 存储过程等,例如您可以用 EXECUTE IMMEDIATE BEGIN TRANSACTION trans-nameEXECUTE IMMEDIATE BEGIN TRANSACTION trans-name 这样的指令开始一个事务开始一个事务。采用这种方法,只要您所用的数据库支持嵌套事务和存储点支持嵌套事务和存储点等事

15、务管理, 我们通过 PowerBuilder 开发出的应用也就同样可以实现。 在 PowerBuilder 中提供的事务管理事务管理的方法是多种多样的,只要您灵活运用,就一定能设计出优秀的 数据库应用来。 PowerBuilder 应用开发系列讲座(2)PowerBuilder 应用开发系列讲座(2) 调用 Windows 的动态链接库调用 Windows 的动态链接库 许多熟练使用 C 的程序员在使用 PowerBuilder 时都希望自己以前在 C 上做的工作可以被 PowerBuilder 引用,这是完全可以的。 在 PowerBuilder 中你可以通过外部引用函数的形式外部引用函数的

16、形式来调用调用动态连 接库中的函数。 动态连 接库中的函数。 PowerBuilder 调用 DLL 程序使用规则PowerBuilder 调用 DLL 程序使用规则 PowerBuilder 可以支持任何一种非 PowerScript 编写,并存储在动态链接库中的外部函数或过程的 调用。但外部函数的参数必须是符合 Pascal 规则的外部函数的参数必须是符合 Pascal 规则的(即参数压栈顺序从前至后)。 在函数调用前,因先作函数声明先作函数声明,PowerBuilder 支持以下两种外部函数类型外部函数类型: 全局全局函数:可以在应用的任意位置调用; 局部外部局部外部函数:在 window,menu,user object 或用户自定义函数等对象中定义。 外部函数声明外部函数声明的语法是: AccessFUNCTION ReturnDataType Function-Name(REFDataTypel Arg1,.,DataTypeN ArgN)LIBRARY LibName

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 心得体会

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号