PowerBuilder 综合教程
第一部分:PowerBuilder 是什么?为什么学习它?
在学习之前,我们先要了解 PowerBuilder 的定位和现状。

什么是 PowerBuilder? PowerBuilder(简称 PB)是由 Sybase 公司(后被 SAP 收购)开发的一款快速应用开发工具,它以其独特的 数据窗口 技术而闻名于世,主要用于构建企业级的客户机/服务器应用程序。
核心特点:
- 数据窗口: 这是 PB 的灵魂,它是一个强大的数据对象,可以轻松地实现数据的增、删、改、查、数据过滤、排序、统计、报表生成等功能,极大地简化了数据库操作。
- 面向对象: PB 使用 PowerScript 语言,支持面向对象的编程思想,如封装、继承、多态,使得代码复用和模块化开发成为可能。
- 可视化开发: 提供了直观的图形化界面设计器,通过拖拽控件即可快速构建用户界面。
- 原生数据库连接: 对多种主流数据库(如 Oracle, SQL Server, Sybase ASA/ASE, DB2 等)提供了非常高效和稳定的原生连接方式。
学习 PowerBuilder 的价值:
- 维护和升级现有系统: 全球仍有大量关键业务系统(如金融、电信、制造等领域)使用 PB 开发,掌握 PB 是维护这些系统、保障业务连续性的必备技能。
- 快速开发 C/S 应用: 对于需要快速构建客户端/服务器架构的中小型应用,PB 依然具有开发效率高的优势。
- 理解经典架构: 学习 PB 有助于你理解 C/S 架构、多层架构以及数据库应用开发的经典模式,对理解其他技术(如 .WinForms, Java Swing)也有帮助。
当前状态:

- 不再是主流新宠: 对于全新的 Web 和移动应用开发,PB 已不是首选技术。
- 生命力依然存在: 在企业应用维护和特定领域,PB 依然拥有稳定的用户群和强大的生命力,SAP 也持续为其提供更新和支持。
第二部分:开发环境准备
在开始编码之前,你需要搭建好开发环境。
安装 PowerBuilder
- 版本选择: 常见的稳定版本有 5, 6, 2025 (版本号 17.0), 2025 (版本号 19.0), 2025 (版本号 22.0),建议从 2025 或更高版本开始,它们对现代操作系统(如 Windows 10/11)的支持更好。
- 获取安装包: 你可以从 SAP Marketplace 下载试用版或购买正式版,一些社区或论坛也可能有旧版本的资源。
- 安装过程: 运行安装程序,按照向导完成安装,安装时请确保选择正确的数据库接口(如 ODBC, Native Driver for Oracle/SQL Server 等)。
安装数据库
- 选择: 为了学习和练习,你可以选择一款易于安装和配置的数据库。
- SAP SQL Anywhere (ASA): 这是 PB 的“最佳拍档”,安装包小,功能齐全,PB 对其支持最好,PB 安装包通常会自带一个 ASA 数据库。
- Microsoft SQL Server Express: 免费,功能强大,是企业级应用的主流选择之一。
- Oracle Express Edition (XE): 免费,功能强大的数据库。
- 创建数据库和用户: 安装数据库后,创建一个用于练习的数据库和一个具有读写权限的用户。
配置数据库连接

- 打开 PowerBuilder。
- 使用 Database 画笔。
- 通过 ODBC 或数据库的 Native Driver 创建数据库配置文件(Profile),填写数据库服务器名、数据库名、用户名、密码等信息。
- 测试连接,确保可以成功连接到你的数据库。
第三部分:核心概念与基础语法
这是学习 PowerBuilder 的基石。
PowerBuilder 开发对象
- 应用: 整个程序的入口点,管理全局变量和对象。
- 窗口: 用户界面的容器,包含各种控件。
- 数据窗口对象: 数据的展示和处理逻辑,它是一个独立于窗口的对象,可以在多个窗口中复用。
- 菜单: 定义窗口的菜单栏。
- 用户对象: 可重用的自定义控件或业务逻辑组件。
- 函数: 封装一段可重复执行的代码。
- 结构: 用于存储一组不同类型的数据。
PowerScript 语言基础
-
变量声明:
integer li_age string ls_name date ld_today // 声明全局变量在应用画笔的 Declare Global Variables 中
-
基本数据类型:
integer,long,decimal,real,double,string,date,datetime,boolean。 -
运算符: 与其他语言类似,包括算术、关系、逻辑运算符。
-
控制流:
-
If...Then...Else:
if li_age > 18 then ls_message = "成年人" else ls_message = "未成年人" end if -
CHOOSE CASE:
choose case ls_grade case 'A' ls_comment = "优秀" case 'B' ls_comment = "良好" case else ls_comment = "及格" end choose -
循环:
// FOR 循环 for integer i = 1 to 10 // ... next // DO...LOOP 循环 do while li_count < 100 // ... li_count++ loop
-
窗口与控件
- 创建窗口: 在 Window 画笔中新建一个窗口。
- 常用控件:
CommandButton(命令按钮)SingleLineEdit(单行文本框)MultiLineEdit(多行文本框)StaticText(静态文本)GroupBox(分组框)ListBox(列表框)DropDownListBox(下拉列表框)DataWindowControl(数据窗口控件,用于显示数据窗口对象)
- 事件与脚本: 为控件编写事件处理脚本,为“查询”按钮的
Clicked事件编写代码来执行数据查询。
第四部分:PowerBuilder 的灵魂——数据窗口
这是掌握 PB 的关键一步。
数据窗口的两种形态
- 数据窗口对象: 在 DataWindow 画笔中创建,它定义了数据如何从数据库中获取、如何展示(布局、样式)、以及如何编辑,它是一个“模板”。
- 数据窗口控件: 放置在窗口上的一个控件,它是数据窗口对象的“容器”或“显示者”。
创建数据窗口对象
- 打开 DataWindow 画笔。
- 选择数据源:
- Quick Select: 最简单,用于单表查询。
- SQL Select: 最常用,可以编写复杂的 SQL 语句,支持多表连接、排序、分组等。
- Stored Procedure: 调用存储过程。
- External: 用于显示非数据库来源的数据。
- 选择显示风格:
- Grid (网格): 类似 Excel,数据以表格形式展示。
- Tabular (列表): 每条记录占一行。
- Freeform (自由格式): 每个字段独立放置,适合表单录入。
- Group (分组): 按指定字段分组显示。
- Graph (图形): 以图表形式展示数据。
- Crosstab (交叉表): 类似 Excel 的数据透视表。
- 定义布局、颜色、字体等属性,然后保存数据窗口对象。
在窗口中使用数据窗口
-
在窗口上放置一个
DataWindowControl控件。 -
在其属性中,选择
DataObject属性,并指定你刚刚创建的数据窗口对象。 -
在窗口的
Open事件或某个按钮的Clicked事件中,编写代码连接数据并检索数据:// 假设 dw_1 是数据窗口控件的名称 // 1. 设置事务对象 (通常在应用初始化时完成) // SQLCA.DBMS = "ODBC" // SQLCA.AutoCommit = False // SQLCA.DBParm = "ConnectString='DSN=MyDSN;UID=user;PWD=pass'" // 2. 连接数据库 (如果未连接) // CONNECT USING SQLCA; // 3. 检索数据 dw_1.SetTransObject(SQLCA) // 将数据窗口控件与事务对象关联 dw_1.Retrieve() // 执行 SELECT 语句并填充数据
数据窗口的常用函数
Retrieve(): 检索数据。Update(): 将数据窗口中的修改保存到数据库。InsertRow(): 插入一行新数据。DeleteRow(): 删除一行数据。SetFilter()/Filter(): 设置过滤条件并应用过滤。Sort(): 对数据进行排序。
第五部分:实战项目示例
让我们通过一个简单的“员工信息管理系统”来串联所学知识。
项目目标: 实现对员工信息的浏览、查询、新增、修改、删除功能。
步骤 1:准备数据库
在数据库中创建一个 employee 表:
CREATE TABLE employee (
emp_id INT PRIMARY KEY,
emp_name VARCHAR(50),
emp_dept VARCHAR(50),
emp_salary DECIMAL(10, 2),
hire_date DATE
);
并插入一些测试数据。
步骤 2:创建数据窗口对象
- 打开 DataWindow 画笔。
- 选择数据源为
SQL Select,连接到你的数据库,选择employee表的所有字段。 - 选择显示风格为
Grid。 - 调整列的标题和宽度,保存为
d_employee_grid。
步骤 3:设计主窗口
- 创建一个新的窗口
w_main。 - 在窗口上放置以下控件:
- 一个
DataWindowControl,命名为dw_employees。 - 一个
GroupBox,命名为gb_query。 - 在
gb_query内部:一个StaticText(显示“姓名”),一个SingleLineEdit(命名为sle_name),一个CommandButton(命名为cb_query)。 - 一个
CommandButton(命名为cb_add),文字为“新增”。 - 一个
CommandButton(命名为cb_update),文字为“修改”。 - 一个
CommandButton(命名为cb_delete),文字为“删除”。 - 一个
CommandButton(命名为cb_exit),文字为“退出”。
- 一个
步骤 4:编写脚本
-
窗口
w_main的Open事件:// 设置数据窗口对象 dw_employees.DataObject = "d_employee_grid" // 关联事务对象并检索数据 dw_employees.SetTransObject(SQLCA) dw_employees.Retrieve()
-
“查询”按钮
cb_query的Clicked事件:string ls_filter // 构建过滤条件 ls_filter = "emp_name like '%" + sle_name.Text + "%'" // 应用过滤 dw_employees.SetFilter(ls_filter) dw_employees.Filter()
-
“新增”按钮
cb_add的Clicked事件:// 在数据窗口的第一行前插入一行空行 dw_employees.InsertRow(0) // 让用户可以编辑新行 dw_employees.SetRow(1) dw_employees.SetColumn("emp_name") -
“修改”按钮
cb_update的Clicked事件:// 检查是否有行被选中 if dw_employees.RowCount() > 0 and dw_employees.GetRow() > 0 then // 数据窗口处于自动更新模式,只需让用户编辑 // 保存操作在“保存”按钮或单独的按钮中完成 Messagebox("提示", "请直接在数据窗口中修改数据,然后点击保存。") else Messagebox("提示", "请先选择要修改的员工。") end if注意:更常见的做法是双击某行弹出一个修改窗口,或者将“修改”和“保存”合并为一个按钮。
-
“删除”按钮
cb_delete的Clicked事件:integer li_row li_row = dw_employees.GetRow() if li_row > 0 then if MessageBox("确认", "确定要删除选中的员工吗?", Exclamation!, YesNo!) = 1 then dw_employees.DeleteRow(li_row) end if else Messagebox("提示", "请先选择要删除的员工。") end if -
“退出”按钮
cb_exit的Clicked事件:// 关闭窗口 Close(Parent)
-
为数据窗口控件
dw_employees添加事件:- 在
ItemChanged事件中,可以编写数据校验逻辑。 - 在
DBError事件中,可以捕获数据库错误并显示友好的错误信息。
- 在
第六部分:进阶主题
当你掌握了基础后,可以学习这些更高级的主题。
-
用户对象:
- 可视化用户对象: 将一组常用的控件(如一个带标签和输入框的组合)封装成一个可复用的控件。
- 类用户对象: 封装非可视化的业务逻辑,如一个“订单处理”对象,提供处理订单的方法。
-
PBL (PowerBuilder Library) 管理:
- PBL 文件(
.pbl)是 PB 存放所有对象的二进制文件。 - 学会如何组织和管理多个 PBL 文件,对于大型项目至关重要。
- PBL 文件(
-
应用部署:
- 使用 PowerBuilder Deployment Kit (PBDK) 或 InstallShield 等工具,将你的应用打包成可执行文件(
.exe)和动态链接库(.dll)。 - 需要部署 PB 运行时库、数据库接口 和 数据库客户端 到目标机器上。
- 使用 PowerBuilder Deployment Kit (PBDK) 或 InstallShield 等工具,将你的应用打包成可执行文件(
-
Web Forms (PB 12.5 及以上版本):
了解如何使用 PB 开发 Web 窗口应用,这是 PB 适应现代开发的重要方向。
-
.NET 集成 (PB 12.5 及以上版本):
了解如何将 PB 的业务逻辑封装成 .NET 程序集,供 C# 或 VB.NET 调用。
第七部分:学习资源推荐
-
官方文档:
SAP Help Portal:这是最权威、最准确的学习资料,搜索 "PowerBuilder Documentation" 即可找到。
-
经典书籍:
- 《PowerBuilder 9.0 实用教程》
- 《PowerBuilder 开发技术详解》
- 虽然书籍版本可能稍旧,但核心思想和技术是相通的。
-
在线社区与论坛:
- SAP Community - PowerBuilder Space: 官方社区,可以提问和获取最新资讯。
- ITPUB (ITpub.net) / CSDN / 博客园: 搜索 "PowerBuilder",可以找到大量国内开发者的技术文章、经验分享和问题解答。
-
视频教程:
- 在 Bilibili、YouTube 等视频网站上搜索 "PowerBuilder 教程",可以找到一些入门和进阶的视频课程。
总结与建议
- 从实践开始: 不要只看理论,跟着教程动手敲代码,创建一个小的项目是最好的学习方式。
- 精通数据窗口: 把 80% 的精力花在学习和精通数据窗口上,这是你未来开发效率的关键。
- 拥抱社区: 遇到问题时,学会在社区中搜索和提问,这是解决问题的捷径。
- 保持耐心: PowerBuilder 是一门经典的技术,其设计理念可能与现代 Web 开发有很大不同,理解它的历史背景和设计哲学,会让你更好地掌握它。
祝你学习顺利!
