首页>参考读物>计算机科学与技术>软件与程序设计

PowerBuilder高级客户/服务器开发
作者 : (美)Bruce Armstrong , Millard F. Brown III
译者 : 李洪发 傅蓉 杨毅 等
出版日期 : 2004-11-24
ISBN : 7-111-14982-3
定价 : 65.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 522
开本 : 16开
原书名 : PowerBuilder : Advanced Client/Server Development
原出版社: Sams Publishing
属性分类: 店面
包含CD :
绝版 : 已绝版
图书简介

本书详尽介绍了使用PowerBuilder构建客户/服务器应用的基础知识,系统而全面地讨论了包括PBNI、PFC以及数据库连接等诸多PowerBuilder高级内容,同时提供了PowerBuilder从未公开的一些技巧和技术。本书作者均是Sybase领域的杰出专家,本书是他们多年开发经验的结晶。
  本书涉及内容广、实用性强,是广大PowerBuilder开发人员以及对最新的客户/服务器开发领域感兴趣的软件开发人员的高级工具书。

图书特色

图书前言

关于本书
  在讨论本书提供的是什么内容之前,我们先来讨论本书没有提供的内容是什么。本书不是一本关于PowerBuilder的入门书籍。PowerBuilder已经存在10多年了。在这些年里,有大量PowerBuilder入门性书籍被出版了—数量之多至今仍然足够读者阅读。我们在本文的最后还提供了这样一些推荐读者阅读的书籍清单。
我们在编写本书时设定了三个特定目标:
  1. 尽量覆盖关于PowerBuilder产品最新发展但是又没有在最近出版的其他书籍中提供的内容。特别是,PowerBuilder版本9引入的一些重要增强之处,包括强大的新特性(PBNI,XML)以及一个完整的源代码控制接口的重新运作,同时还包括IDE的发展前景。我们希望上述这些内容都能被本书很好地加以论述。
  2. 尽量比最近出版的书籍覆盖更高级的内容。尽管目前有非常多的书籍覆盖了PowerBuilder的介绍性和一般性问题的讨论,我们感觉有必要提供一本书来探讨那些可以“揭开面纱”的开发技巧。在本书最后,所提供的一些此方面的内容覆盖了一些至今还没有文档化的技巧。
  3. 尽量使本书具有实践意义。Web站点(www.pb9book.com)已经可以提供在本书许多章节中讨论的技巧演示示例代码,因此读者可以立即获得这些代码并为己所用。

本书的组织结构
  本书分成四个部分。第一部分讨论开发环境,着重于PowerBuilder最新版本的变化。第二部分直接讨论PowerBuilder的核心和精髓部分,DataWindow。第三部分讨论如何获得大量不同数据库接口的最佳使用。最后一部分将覆盖一些高级主题,包括探讨PowerBuilder的未来。
  第一部分“PowerBuilder开发环境”
  本书的第一部分讨论PowerBuilder开发的常见特性:IDE、源代码控制、编译和部署应用程序、使用InfoMaker制作报表以及高级编码技术。
  第1章“PowerBuilder集成开发环境”
  PowerBuilder IDE在最近的几个版本中经过了根本性的改变。其结果是PowerBuilder的开发环境被极大地改进了,并且大大提高了生产率,但这种改变对于那些熟悉PowerBuilder旧接口的人可能会感到畏惧。对于那些来自PowerBuilder版本7或者更早版本的PowerBuilder 9开发人员,本章是使你能够适应这个完全重新设计的用户接口的必要指南。
  第2章“源代码控制”
  PowerBuilder的源代码控制支持在PowerBuilder最近几个版本中也有了根本性的改变。因为配置和实现细节被大大改变了,对于那些熟悉旧技术的开发人员来说带来了极大的混乱。本章将向开发人员介绍在新范型下的源代码控制图表的、完整的配置和实现过程。
  第3章“应用程序的编译和部署”
  尽管PowerBuilder的DataWindow控件和面向对象编程能力使其已经成为一个功能强大的开发工具,但是PowerBuilder一直表现平平的编译和部署能力最近也发生了变化。这方面的功能通过PowerBuilder最近几个版本的发布已经有了非常显著的改进,本章将讨论这些变化,包括命令行编译(允许自动构建)以及在应用程序的EXE和DLL文件中提供版本信息。
  第4章“InfoMaker”
  本章讨论InfoMaker如何用于基于PowerBuilder的应用程序中,从而向终端用户提供任意报表的生成能力。
  第5章“高级编码技术”
  本章讨论配置和使用开发环境的最高效的途径。

第二部分“DataWindow”
  本书的第二部分关注于PowerBuilder不同于其他工具的控件:DataWindow。
  第6章“高级DataWindow技术”
  本章讨论高级DataWindow技术,例如动态应用业务规则等。
  第7章“终极DataWindow”
  本章讨论如何使用元数据(metadata)来创建高级图形化和交互式数据窗口。
  第8章“XML DataWindow”
  XML迅速成为异构应用环境之间进行通信的标准。但是,它仍然可以在客户/服务器环境中被使用。因为XML是一个被广泛采用的数据转换标准,它使得人们可以提供中间步骤完成文档格式转换或者应用程序信息转换。本章讨论PowerBuilder中XML的一些用法,同时提供这些用法的一些实践示例。

第三部分“数据库连接”
  因为本书关注的是将PowerBuilder作为一个客户/服务器开发工具使用,我们需要了解PowerBuilder与各种不同数据库接口如何工作的技术。本书第三部分提供这方面的内容。
  第9章“Sybase Adaptive Server Enterprise”
  本章讨论同Sybase Adaptive Server Enterprise数据库连接的一些最常见问题及其解决方案。
  第10章“Sybase Adaptive Server Anywhere”
  本章讨论同Sybase Adaptive Server Anywhere数据库连接的一些最常见问题及其解决方案。
  第11章“Oracle”
  本章讨论Oracle数据库连接的最新功能增强,包括对9i的支持、故障切换支持以及Unicode支持。
  第12章“ODBC”
  本章讨论如何配置和使用ODBC驱动程序进行数据库连接。
  第13章“JDBC”
  本章讨论如何配置和使用JDBC驱动程序进行数据库连接。
  第14章“通过Sybase Mainframe Connect的IBM DB2和CICS”
  本章讨论同IBM DB2数据库连接的一些最常见问题及其解决方案。
  第15章“IBM Informix”
  本章讨论同IBM Informix数据库连接的一些最常见问题及其解决方案。
  第四部分 “高级课题”
  本书的第四部分将关注PowerBuilder的特定高级技术:PowerBuilder基础类库(PowerBuilder Foundation Class,PFC)、使用第三方工具、高级控件、PowerBuilder本机接口(PowerBuilder Native Interface,PBNI)、对象链接与嵌入(Object Linking and Embedding,OLE)。本书的最后一章,我们将讨论PowerBuilder的未来前景。
  第16章“PowerBuilder基础类库(PFC)”
  对于那些还没有将PFC纳入自己的客户/服务器应用程序中的人来说,本章介绍了什么是PFC以及如何最好地使用PFC。对于那些已经使用PFC的人来说,本章讨论了应该引起注意的PFC最新变化,有助于人们将基于PFC的应用程序移植到最新PowerBuilder版本中。
  第17章“第三方工具”
对于PowerBuilder开发人员来说有许多第三方工具可以使用—它们中的绝大多数未被关注。本章通过向读者介绍大量可用的第三方工具来关注这个问题,以满足开发人员的一些较常见的需求。关于这些第三方工具的开放源码/自由件/共享件/评估版或产品描述的评论可以从网站(www.pb9book.com)上获得。
  第18章“公共控件”
  本章讨论那些PowerBuilder没有直接提供访问的公共控件的用法。
  第19章“PowerBuilder本机接口(PBNI)”
  PowerBuilder本机接口(PowerBuilder Native Interface,PBNI)允许开发人员创建PowerScript和PowerBuilder系统对象的扩展。使用C++创建的遵循PBNI惯例的DLL可以被转换到PBD中,其中的对象和方法可以被PowerScript调用,好像它们是PowerBuilder环境的本地内容一样。本章讨论PBNI的客户/服务器应用程序,并且提供对其用法示例。
  第20章“对象链接与嵌入”
  本章讨论使用OLE及其解决方案时遇到的一些最常见问题。
  第21章“未来的方向”
  本章讨论PowerBuilder产品在如下领域的未来方向:.NET、Java、移动目标以及未来的IDE集成。

  推荐其他读物
  我们将如下书籍作为一本好的导论性书籍特别推荐给大家:
《Developing PowerBuilder 5 Applications, Fourth Edition》,Bill Hatfield著,Sams Publishing,1996年5月。ISBN:0672309165
我们同时也推荐专注于PowerBuilder开发特定重要方面的一些书籍。例如,DataWindow控件是下面这本书重点论述的主题:
  《The Definitive DataWindow: Your Key to PowerBuilder Success》,Richard Brooks著,Addison-Wesley Pub. Co.,2000年4月6日。ISBN:0-201-70224-X
  关于PowerBuilder基础类库(PFC)可以参看下面这本书:
《PowerBuilder Foundation Class Library Professional Reference(Team Powersoft Series)》,Howard Block、Millard Brown III、Boris Gasin、William Green、Andy Tauber著,Computing McGraw-Hill,1997年11月。ISBN:0-079-13267-7
  最后,还推荐一本关注面向对象编程的书籍:
《PowerBuilder 5:Object-Oriented Design and Development》,William Green和Millard Brown III著,McGraw-Hill Osborne Media,1996年11月8日。ISBN:0-070-24550-9

致谢
  首先感谢Sams出版社的编辑们,特别是Loretta Yates、Michael Watson以及George Nedeff,在本书撰写过程中的耐心和支持。同时也感谢Raj Nathan(Sybase的副总经理),由于他的努力使得PowerBuilder又一次走到了前台;感谢Sue Dunnell(PowerBuilder产品经理)以及Renee Nichols(产品支持工程师)所做的努力,并且也感谢那些开发PowerBuilder产品同时保持其稳定性的开发团队成员;感谢Dan Goldstein(PowerBuilder在图书市场开发方面的产品市场专家)对这个产品的书面见解。我们同时也对其他Sybase的员工深表谢意,感谢他们提供问题的解答以及审阅书籍草稿:Wu Xue Song、Bio Liong Lim以及Zai Qiang Leng,还有其他两位甚至自己为本书撰写了内容:Dave Fish和Jim O'Neil。这些才智过人、精力集中、同时又埋头苦干的人们是Sybase的典范。我们同时也想感谢本书中其他的合作者,感谢他们愿意奉献出自己对于这样一个广泛主题的知识与大家共享。没有他们的知识,本书覆盖的范围就不可能如此之广。

联系方式
  作为本书的读者,您的真知灼见对于我们提高水平,今后更好地服务于广大读者具有重要意义。
  您可以通过电子邮件或者书信来告知我们对于本书的意见和建议。
  请注意我们无法在同本书主题相关的技术问题上提供帮助。我们是且仅仅是一个用户服务组织,只负责转发同本书相关的具体技术问题。
  当撰写评论时,请注意确保包括了本书的标题和作者,以及您的姓名、电子邮件地址以及电话号码。我们将非常仔细地阅读您的评论,并同本书作者和编辑共享您的评论。
  E-mail:feedback@samspublishing.com
  邮寄地址:Michael Stephens
Associate Publisher
Sams Publishing
201 West 103rd Street
Indianapolis, IN 46290 USA
  要想了解本书或者Sams其他书籍的更多信息,请访问网站www.samspublishing.com。在搜索文本框中输入ISBN(不包括连字符)或者书籍的名称就可以发现希望查找的内容。

作者简介

(美)Bruce Armstrong , Millard F. Brown III:Bruce Armstrong: 是洛杉矶区的独立咨询顾问。他是TeamSybase的发起人之一,从第一个版本就开始使用PowerBuilder。Bruce是《PowerBuilder 4.0 Secrets of the Masters》的作者之一,还是《PowerBuilder Developer誷 Journal》编辑委员会的成员,在该杂志上已经发表了多篇文章,包括每月的新闻专栏。
Millard F. Brown III: 是TeamSybase的成员并且是负责Power3(Power-Cubed,Power立方)培训开发的副主管。Power3在企业、因特网开发以及体系结构方面提供咨询和培训。Millard从1996年起就是TeamSybase(当时称为TeamPowersoft)的成员。他的专业领域包括面向对象设计和体系结构、多层因特网及intranet开发。他还负责培训材料的编写和交付。他在Sybase产品方面的知识涉及PowerBuilder(从版本2以后)、EAServer和PowerDesigner等方面。

译者简介

李洪发 傅蓉 杨毅 等:暂无简介

译者序

自从1991年首度推出以来,PowerBuilder已经跨过了12年的发展历史。从PowerBuilder 1.0、2.0、3.0,到PowerBuilder 7.0、8.0,每一次PowerBuilder版本升级都有不小的改进,但PowerBuilder 9.0的进步是革命性的,它给人们带来的绝对是令人震撼的惊喜。它带来了许多最新的企业开发所需要的功能,具有划时代的意义。本书以用PowerBuilder构建客户/服务器应用为基础,全面介绍了包括PBNI、PFC以及数据库连接等诸多PowerBuilder高级内容,同时揭示了PowerBuilder从未向公众提供的一些技巧和技术。
  本书的作者都属于Sybase领域最杰出的成员,其中的一些人是Team Sybase中的负责人员,该组织的成员是在其各自领域内被Sybase认可的专家。他们在PowerBuilder 9.0的设计中做了大量的工作,对于该产品具有广博而深厚的知识,在本书中他们以实际而直观的方式阐明其功能,不仅和读者分享了PowerBuilder 9.0所带来的新特性和功能,而且还向读者介绍了他们在PowerBuilder客户/服务器应用开发方面多年的经验。

本书分为四个部分:
  第一部分将讨论PowerBuilder开发的常见特性,着重于PowerBuilder最新版本的变化:IDE、源代码控制、编译和部署应用程序、使用InfoMaker制作报表以及高级编码技术。
  第二部分直接讨论PowerBuilder的核心和精髓部分,这是PowerBuilder不同于其他工具的控件技术:DataWindow。
  因为本书关注的是将PowerBuilder作为一个客户/服务器开发工具使用,所以我们需要了解PowerBuilder与各种不同数据库接口如何工作的技术。本书第三部分将讨论如何获得PowerBuilder与大量不同数据库接口的最佳使用。
  最后一部分将涵盖一些高级主题,包括探讨PowerBuilder的未来,并关注PowerBuilder的特定高级技术:PowerBuilder基础类库(PowerBuilder Foundation Classes,PFC)、使用第三方工具、高级控件、PowerBuilder本机接口(PowerBuilder Native Interface,PBNI)、对象链接与嵌入(Object Linking and Embedding,OLE)。本书的最后一个章节将讨论PowerBuilder的未来前景。
  本书最后的附录针对PowerBuilder提供了Sybase Adaptive Server Enterprise、Oracle参考手册以及与之相关的第三方工具参考手册。
  本书的作者们在编写本书时设定了三个特定目标。即尽量覆盖关于PowerBuilder产品最新发展但是却没有在最近出版的书籍中提供的内容;尽量比最近出版的书籍涵盖更高级的内容。尽量使本书具有实践意义。翻译本书也是阅读本书的最佳途径之一,我们对此深有体会。相关网站(www.pb9book.com)已经可以提供在本书许多章节中讨论的技巧演示示例代码,读者可以立即获得这些代码并为己所用。
  本书全书由李洪发、傅蓉、杨毅等进行翻译,参与翻译工作的还有张昆琪、王海峰、刘耀明、杨旭、王蔓、欧阳荣彬、王强、尹婷、李宏平、刘海宁、邓春红、黄凯、周鹏、张小辉、刘建伟、李昂、陈磊、王秀英、王冶、李家峻等。宋涛完成了本书的统稿和审校工作。由于时间仓促,且译者的水平有限,在翻译过程中难免会出现一些错误,请读者批评指正。

宋  涛
2004年3月

图书目录

第一部分  PowerBuilder开发环境
第1章  PowerBuilder集成开发环境 1
1.1  目标 1
1.2  IDE的发展历史 1
1.3  工作区和目标 4
1.3.1  工作区 4
1.3.2  目标 8
1.4  IDE研究 12
1.4.1  IDE工具栏 12
1.4.2  IDE 菜单选项 13
1.4.3  System Tree 16
1.4.4  Clip Window 16
1.4.5  Output Window 17
1.4.6  Design Area 18
1.5  IDE的其他有用特性 19
1.5.1  To Do List(任务列表) 19
1.5.2  Keyboard Shortcuts(键盘快捷键) 19
1.5.3  配置、跟踪和调试 20
1.5.4  其他工具 20
1.6  IDE的高级特性 21
1.7  小结 25
第2章  源代码控制 26
2.1  目标 26
2.2  为什么要实现版本控制 26
2.3  PowerBuilder和SCC的集成 27
2.3.1  PowerBuilder与SCC集成的发展简介 28
2.3.2  早期的代码管理体系结构 28
2.3.3  SCC接口中体系结构的变化 29
2.3.4  新的SCC文件类型 30
2.3.5  PBNative的体系结构变化 30
2.4  PowerBuilder 8和PowerBuilder 9中IDE的变化 31
2.4.1  工作区属性对话框 31
2.4.2  安装注意事项 33
2.4.3  系统树和库画板SCC图标 34
2.4.4  库画板 35
2.5  源代码控制菜单 35
2.5.1  工作区级上下文菜单 35
2.5.2  目标级上下文菜单 36
2.5.3  PBL级上下文菜单 36
2.5.4  对象级上下文菜单 37
2.6  源代码控制操作 38
2.6.1  Add to Source Control(添加到源代码控制) 38
2.6.2  Remove from Source Control(从源代码控制中删除) 38
2.6.3  Refresh Status(状态刷新) 39
2.6.4  Check Out(签出) 39
2.6.5  Check In(签入) 39
2.6.6  Undo Checkout(撤销签出) 40
2.6.7  Get Latest Version(获取最新版本) 40
2.6.8  Show Differences(差别显示) 41
2.6.9  Show History(历史显示) 42
2.6.10  SCC Properties(SCC属性) 42
2.6.11  Backup SCC Status Cache(备份SCC状态缓存) 42
2.6.12  Run Source Control Management Tool(运行源代码控制管理工具) 42
2.6.13  Advanced Options(高级选项) 42
2.7  PowerBuilder 9中有效的SCC实现 43
2.8  工程工作区和目标的计划 43
2.9  PB 9中PBNative的设置 43
2.9.1  第一步—文件夹和PBL的结构调整 44
2.9.2  第二步—创建工作区和目标 45
2.9.3  第三步—设置PBNative知识库 45
2.9.4  第四步—添加其他开发者 46
2.9.5  第五步—有选择地使用工作PBL 46
2.10  第三方SCC提供程序的设置 47
2.11  PowerBuilder 9的分支与合并 47
2.11.1  初始化设置和注册 47
2.11.2  常用操作 48
2.11.3  建立分支工作区和视图 49
2.12  第三方SCC提供程序简介 51
2.13  小结 52
第3章  应用程序的编译和部署 53
3.1  目标 53
3.2  这些年PowerBuilder部署的发展 53
3.3  PowerBuilder 9中应用程序的部署 54
3.3.1  编译器基础 54
3.3.2  应用程序包 55
3.3.3  动态运行库的使用 55
3.3.4  外部资源的使用 56
3.3.5  工程画板 57
3.3.6  目标级部署 60
3.3.7  工作区级部署 60
3.3.8  构建运行库 61
3.4  使用OrcaScript的命令行部署 61
3.4.1  简介 62
3.4.2  体系结构 62
3.4.3  OrcaScript命令参考 63
3.4.4  Power Gen 66
3.5  向终端用户交付完成的应用程序 67
3.5.1  环境组件 68
3.5.2  应用程序组件 70
3.6  其他提示和技巧 71
3.6.1  将版本信息构建进可执行文件 71
3.6.2  从数据库中部署应用程序 72
3.7  小结 72
第4章  InfoMaker 73
4.1  目标 73
4.2  InfoMaker环境 73
4.2.1  库画板 74
4.2.2  报表画板 74
4.2.3  管道和数据库画板 75
4.2.4  表单画板 75
4.3  部署 75
4.4  新特性 76
4.4.1  可执行文件的版本编号 76
4.4.2  命令行参数 76
4.4.3  新的文件存储格式 77
4.4.4  XML 77
4.5  在何处使用PowerBuilder 78
4.5.1  自定义表单样式 78
4.5.2  默认表单样式 79
4.5.3  行为 80
4.5.4  注册表中工具栏的设置 81
4.5.5  非默认的表单样式 82
4.6  自定义Imstyle9.pbl 82
4.7  局限性 83
4.8  代码的调试 83
4.9  在InfoMaker表单中不使用PowerBuilder编写代码 85
4.10  小结 86
第5章  高级编码技术 87
5.1  目标 87
5.2  开发环境 87
5.2.1  设置开发环境 87
5.2.2  操作系统的支持(XP) 92
5.2.3  库的组织 94
5.2.4  库的维护 96
5.3  IDE 96
5.3.1  快捷键的使用 96
5.3.2  PowerPanel的扩展 97
5.4  编码 100
5.4.1  编码框架 100
5.4.2  事件又是怎样的呢 104
5.4.3  异常处理 105
5.4.4  性能 118
5.4.5  性能小结 121
5.5  数据库的独立性 121
5.5.1  数据库设计 121
5.5.2  DataWindow 122
5.5.3  嵌入式SQL 122
5.6  小结 124
第二部分  DataWindow
第6章  高级DataWindow技术 125
6.1  目标 125
6.2  使用表达式 125
6.2.1  设计时的表达式 126
6.2.2  布尔计算 127
6.2.3  其他计算 129
6.2.4  运行时的表达式 129
6.2.5  使用带的表达式 130
6.2.6  使用形状的表达式 131
6.3  DataWindow 报告 132
6.3.1  嵌套报告 132
6.3.2  复合报告 134
6.3.3  动态嵌套报告 136
6.3.4  复合和嵌套的区别在哪里 138
6.4  动态SQL 139
6.4.1  动态SQL(格式1) 139
6.4.2  动态SQL(格式2) 140
6.4.3  动态SQL(格式3) 140
6.4.4  动态SQL(格式4) 141
6.5  其他关于SQL的考虑 142
6.5.1  SQLPreview 事件 142
6.5.2  TABLE.SELECT 属性 144
6.5.3  关于Describe函数的重要注意事项 144
6.5.4  SetSQLSelect函数 144
6.5.5  为什么TABLE/SELECT 比 SetSQLSelect更受欢迎 145
6.5.6  动态DataWindow 145
6.5.7  最后的关于SQL的想法 146
6.6  使用带的乐趣 147
6.6.1  基础 147
6.6.2  改变Header带 147
6.6.3  删除Detail行 149
6.6.4  组的使用 149
6.6.5  在带之间移动对象 151
6.7  动态创建DataWindow对象 151
6.7.1  裸露的DataWindow 151
6.7.2  理解语法 151
6.7.3  创建动态对象 155
6.8  新的客户/服务器 DataWindow特性 156
6.8.1  增强的DataWindow打印功能 156
6.8.2  ClipText 156
6.8.3  OverridePrintJob 156
6.8.4  PrinterName 157
6.8.5  多副本打印 157
6.8.6  Collate 157
6.8.7  检索子DataWindow 157
6.8.8  滚动Group报告 157
6.9  小结 158
第7章  终极DataWindow 159
7.1  目标 159
7.2  绘制简单的图形 159
7.3  矩形的创建和操纵 161
7.3.1  uo_lbd 事件 161
7.3.2  uo_mm 事件 161
7.3.3  uo_lbu 事件 162
7.3.4  选择对象 162
7.4  在DataWindow之内和之间移动图像 164
7.5  在DataWindow之间移动图像 165
7.6  使用元数据创建多图形的DataWindow 167
7.6.1  控制可见的DataWindow对象 168
7.6.2  将元数据应用到DataWindow对象的可见属性 169
7.6.3  构造元数据 169
7.7  操纵元数据 171
7.7.1  为某些DataWindow对象属性赋负值 174
7.7.2  跨越多行来显示基于行的对象 174
7.8  包含的源代码 176
7.9  小结 176
第8章  XML DataWindow 177
8.1  介绍 177
8.2  什么是XML 177
8.3  XML解析器 180
8.4  DataWindow导出引擎 180
8.5  导出模板:图形用户界面 182
8.5.1  导出模板的报头部分 183
8.5.2  导出模板细节部分 186
8.5.3  将DataWindow元素映射到XML节点 186
8.6  导出XML 186
8.7  示例Ⅰ 189
8.8  示例Ⅱ 189
8.9  示例Ⅲ 190
8.10  示例Ⅳ 192
8.11  导入XML 193
8.12  新DLL 194
8.13  小结 194
第三部分 数据库连接
第9章  Sybase Adaptive Server Enterprise 197
9.1  目标 197
9.2  连接ASE 197
9.3  数据类型 198
9.4  DataWindow 199
9.4.1  将SQL语句用于源 199
9.4.2  将存储过程用于源 200
9.4.3  将存储过程用于更新 203
9.5  存储过程 208
9.5.1  作为远程过程调用 208
9.5.2  作为嵌入式SQL 210
9.5.3  可选参数 211
9.6  嵌入式SQL 213
9.7  特殊问题 213
9.7.1  identity列 214
9.7.2  隐藏对象所有权 214
9.7.3  使用DBHandle和CT-LIB 214
9.7.4  使用print语句进行调试 216
9.8  小结 217
第10章  Sybase Adaptive Server Anywhere 218
10.1  目标 218
10.2  通过PowerBuilder连接 218
10.3  数据类型 218
10.4  开发需要考虑的因素 219
10.4.1  标识符大小写 220
10.4.2  带有所有者名称的限定SQL 220
10.5  与数据库交互 221
10.5.1  DataWindow 222
10.5.2  直接调用存储过程 230
10.5.3  嵌入式SQL 232
10.6  小结 232
第11章  Oracle 233
11.1  目标 233
11.2  连接Oracle 233
11.3  数据类型 234
11.4  DataWindow 234
11.4.1  为数据源使用SQL语句 234
11.4.2  为数据源使用存储过程 239
11.4.3  为更新而使用存储过程 245
11.4.4  OLE数据库Blob列 246
11.5  存储过程 247
11.5.1  作为远程过程调用(RPC) 247
11.5.2  作为嵌入式SQL 254
11.6  嵌入式SQL 257
11.7  特殊问题 258
11.7.1  用户定义数据类型 258
11.7.2  非法对象 259
11.7.3  使用同义词隐藏方案所有权 260
11.7.4  非智能(代理)主键 260
11.7.5  安全性 262
11.7.6  故障切换(failover)支持 263
11.7.7  多个Oracle Home 263
11.7.8  典型的ORA-xxxxx错误 264
11.7.9  慢连接 265
11.7.10  故障排除 265
11.7.11  全球语言支持 266
11.7.12  共享服务器 267
11.7.13  连接到非Oracle数据库 269
11.7.14  使用DBHandle和OCI DLL 271
11.8  小结 277
第12章  ODBC 278
12.1  目标 278
12.2  什么是ODBC 278
12.3  如何使用ODBC 279
12.3.1  建立配置 279
12.3.2  连接数据库 279
12.3.3  建立对ODBC API的调用 279
12.3.4  执行对ODBC API的调用 280
12.3.5  检查ODBC API调用的返回值 280
12.4  建立ODBC数据源 280
12.5  你机器上的ODBC数据源 281
12.6  ODBC与PowerBuilder事务对象 281
12.7  神奇的文件—PBODB90.INI 286
12.8  排除ODBC故障 288
12.8.1  Database Trace 289
12.8.2  ODBC Driver Manager Trace 290
12.9  ODBC资源 291
12.10  小结 291
第13章  JDBC 292
13.1  目标 292
13.2  JDBC体系结构 293
13.2.1  类型1驱动器 293
13.2.2  类型2驱动器 293
13.2.3  类型3驱动器 294
13.2.4  类型4驱动器 295
13.3  Sybase jConnect for JDBC 296
13.4  开始 297
13.5  指定数据源 298
13.6  建立连接 298
13.7  执行语句和返回结果 299
13.8  ResultSet和数据库元数据 299
13.9  DatabaseMetaData 300
13.10  ResultSetMetaData 300
13.11  使用Sybase jConnect的例子 301
13.12  JDBC中的事务 304
13.13  在PowerBuilder中使用JDBC 305
13.13.1  准备使用JDBC接口 305
13.13.2  从PowerBuilder定义数据库原型 306
13.13.3  为在EAServer中运行的组件配置选项 307
13.14  小结 309
第14章  通过Sybase Mainframe Connect的IBM DB2和CICS 310
14.1  目标 310
14.2  DirectConnect 体系结构概述 310
14.3  通过PowerBuilder连接 312
14.3.1  配置Open Client(开放客户端) 312
14.3.2  配置PowerBuilder连接配置文件 313
14.3.3  其他的连接参数 314
14.3.4  连接初始化 318
14.4  数据类型 319
14.4.1  Character数据类型 319
14.4.2  Distinct数据类型 320
14.4.3  不支持的数据类型 320
14.5  开发需要考虑的因素 321
14.5.1  标识符大小写 321
14.5.2  用所有者名称限定SQL 322
14.5.3  表清单 322
14.5.4  PowerBuilder扩展属性表 324
14.6  访问外部数据 325
14.6.1  元数据 325
14.6.2  远程过程调用(RPC) 325
14.6.3  远程存储过程(RSP) 326
14.6.4  DB2自身存储过程调用 328
14.6.5  处理警告 329
14.7  安全接口 330
14.7.1  SYPM事务 330
14.7.2  TRS选项 331
14.7.3  经由DB2 Access Service的sp_password 332
14.8  小结 333
第15章  IBM Informix 334
15.1  目标 334
15.2  连接Informix 334
15.2.1  Setnet32配置 335
15.2.2  IBM Informix 的PowerBuilder数据库配置文件的建立 335
15.3  数据类型 337
15.3.1  DATETIME 和 TIME数据类型 338
15.3.2  INTERVAL数据类型 338
15.3.3  SERIAL 数据类型 339
15.3.4  TEXT和BYTE数据 340
15.3.5  其他数据类型 342
15.4  使用存储过程 344
15.4.1  在DataWindow之内 344
15.4.2  作为一个RPC FUNC 345
15.4.3  在嵌入式SQL内 346
15.4.4  处理RAISE EXCEPTION 347
15.5  外部联合语法 348
15.6  日志模式 348
15.7  AutoCommit 349
15.8  隔离级别(isolation level) 349
15.9  小结 350
第四部分  高级课题
第16章  PowerBuilder基础类库(PFC) 351
16.1  目标 351
16.2  什么是PFC 351
16.3  什么是SBA 352
16.4  PFC体系结构 353
16.5  PFC主要对象和服务 354
16.5.1  PFC对象 355
16.5.2  PFC服务 357
16.6  PFC开始向导 361
16.7  PFC快速入门 362
16.8  PFC示例应用 363
16.9  使用公共PFC对象和服务 363
16.9.1  PFC常量 364
16.9.2  菜单 364
16.9.3  数据窗口(u_dw) 366
16.9.4  Resize服务 366
16.9.5  Linkage服务 367
16.9.6  分隔条 368
16.9.7  状态栏服务 369
16.10  更多预编码脚本 369
16.10.1  应用程序对象 370
16.10.2  窗口(W_master 或 Descendant) 371
16.10.3  数据窗口 371
16.11  提示和诀窍—从PFC中获得最大利益 372
16.12  速度要求 373
16.13  调试PFC 373
16.13.1  避免出现activate事件 373
16.13.2  PFC调试日志 374
16.14  PFC的变化 374
16.14.1  PowerBuilder 6中PFC的变化 374
16.14.2  PowerBuilder 7中PFC的变化 375
16.14.3  PowerBuilder 8中PFC的变化 375
16.14.4  PowerBuilder 9中PFC的变化 375
16.15  PFC资源 375
16.16  小结 376
第17章  第三方工具 377
17.1  目标 377
17.2  目前的状况 378
17.3  如果不去找,就找不到 378
17.3.1  在因特网上寻找工具 378
17.3.2  出版文章和广告 379
17.4  服务于为我们提供服务的人 379
17.5  购买与构建—激战正酣 381
17.6  对选择产品的建议 381
17.6.1  了解自己的需求 381
17.6.2  了解哪些是可用的 382
17.6.3  灵活性 382
17.6.4  考虑重组你的业务过程 382
17.6.5  现实 382
17.6.6  仔细考虑生产产品的公司的稳定性 382
17.6.7  购买源码 383
17.6.8  获得参考 383
17.6.9  别为小钱出汗 383
17.7  工具类型 383
17.7.1  前期开发工具 383
17.7.2  协同执行工具 384
17.7.3  提高效率的工具 384
17.8  产品列表 384
17.8.1  编码实用工具 384
17.8.2  重新生成/构造工具 384
17.8.3  测试工具 385
17.8.4  Web移植工具 385
17.8.5  Case、设计和分析工具 385
17.8.6  代码框架 385
17.8.7  终端用户报表工具 386
17.8.8  其他的实用工具 386
17.9  其他Sybase工具 386
17.10  小结 387
第18章  公共控件 388
18.1  目标 388
18.2  Win32 API是什么 388
18.2.1  寻找好的文档 388
18.2.2  C语言风格的文档 389
18.2.3  从C的数据类型到PowerBuilder
的数据类型的转换 389
18.2.4  从Win32 API调用到PowerBuilder外部函数的转换 390
18.2.5  SendMessageA和SendMessageW的区别 390
18.2.6  重载SendMessage 391
18.2.7  为消息ID创建常量 391
18.2.8  从C的结构到PowerBuilder结构的转换 392
18.2.9  封装Win32 API调用 393
18.2.10  回顾 393
18.3  消息子系统 394
18.3.1  窗口句柄和事件 394
18.3.2  编程实现发送消息 394
18.3.3  子窗口、父窗口和通知消息 396
18.3.4  编程创建窗口 396
18.3.5  回顾 398
18.4  公共控件 398
18.4.1  公共控件列表清单 399
18.4.2  公共控件DLL版本 399
18.4.3  如何确定安装的COMCTL32.DLL是哪个版本 400
18.4.4  回顾 402
18.5  PowerBuilder外部可视化对象 402
18.6  封装一个公共控件 404
18.6.1  从哪里开始 404
18.6.2  初始化公共控件 404
18.6.3  窗口风格和类名 405
18.6.4  消息ID 406
18.6.5  向公共控件发送消息 407
18.6.6  在函数中封装消息 408
18.6.7  将实现与可视化控件联系起来 408
18.6.8  实现非可视化用户对象 409
18.6.9  回顾 417
18.7  创建可视化组件 418
18.7.1  使用公共控件 418
18.7.2  回顾 420
18.8  小结 421
第19章  PowerBuilder本机接口(PBNI) 422
19.1  目标 422
19.2  什么是PBNI 423
19.2.1  IPB_Session 423
19.2.2  IPB_Value 423
19.2.3  IPB_Arguments 424
19.2.4  IPB_VM 424
19.3  PBNI SDK 424
19.4  构建PBNI扩展 424
19.4.1  实现PBNI类 425
19.4.2  PBNI要求的功能 426
19.4.3  构建PBNI扩展DLL 428
19.5  你的第一个PBNI类 429
19.5.1  创建PBNI DLL 429
19.5.2  创建PBD 433
19.5.3  创建PB客户端 433
19.5.4  示例回顾 434
19.6  使用PBNI对象 435
19.6.1  用PowerBuilder交换数据 435
19.6.2  调用PowerScript对象函数 436
19.6.3  回顾PBNI回调示例 438
19.7  触发PowerBuilder事件 440
19.8  PBNI全局函数 440
19.9  从PBX内部调用PowerScript系统函数 442
19.10  访问和操作数组 443
19.10.1  PBBoundedArrayCreator 444
19.10.2  PBUnboundedArrayCreator 445
19.10.3  PBArrayAccessor 445
19.10.4  PBBoundedObjectArrayCreator 446
19.10.5  PBUnboundedObjectArrayCreator 446
19.10.6  PBObjectArrayAccessor 447
19.11  PBNI可视化对象 447
19.11.1  GetWindowClassname 448
19.11.2  CreateControl 448
19.11.3  可视化PBNI示例回顾 455
19.12  在PowerBuilder中处理PBNI异常 455
19.13  调试PBNI类 457
19.14  部署你的PBNI扩展 458
19.15  在第三方应用程序中加载PowerBuilder虚拟机 459
19.16  PBNI实用工具 461
19.16.1  PBSIG90 461
19.16.2  PBX2PBD90 462
19.17  小结 462
第20章  对象链接与嵌入 464
20.1  目标 464
20.2  OLE环境 464
20.2.1  早期绑定与晚期绑定 465
20.2.2  ActiveX设计器 465
20.3  OLE自定义控件 466
20.4  OLE自动化 471
20.5  OLEStream和OLEStorage 478
20.6  小结 478
第21章  未来的方向 479
21.1  目标 479
21.2  前景 479
21.3  .NET 480
21.3.1  对XML服务的支持 481
21.3.2  DataWindow.NET和DataStore.NET 481
21.3.3  从PowerBuilder IDE中创建.NET对象 482
21.3.4  对.NET的支持 482
21.4  Java 482
21.4.1  EAServer中的Web服务 482
21.4.2  EJB客户端、PowerBuilder Web服务和JSP 483
21.4.3  第三方应用服务器中的Power-Builder NVO 483
21.5  移动目标 483
21.6  IDE集成 483
21.7  小结 484
附   录
附录A  Sybase自适应服务器企业参考手册 485
附录B  Oracle参考手册 495
附录C  第三方工具参考手册 501

教学资源推荐
作者: (美)Victor Shtern
作者: [美]戴维 I. 施奈德(David I. Schneider) 著
作者: [美]Samuel P.Harbison Ⅲ,Guy L.Steele
参考读物推荐
作者: (英)Mark Birbect 等
作者: 白鉴聪 潘军锋 罗剑波