简介:这是一套面向PowerBuilder(PB)初学者与进阶开发者的系统化入门到实战教程,聚焦企业级数据库应用开发场景,解决GUI快速构建、DataWindow数据处理、PBL脚本编写及多数据库集成等核心问题。资源共44个文件,以42个HTML格式教程页为主,覆盖PB基础语法、窗口设计、ztwz主题窗口管理、jsjz接口组件实践、数据库连接配置(Oracle/SQL Server/MySQL)及.NET桥接等关键模块;另含1个说明文档txt(含环境配置与常见问题)和1个源代码参考url链接,整体压缩包仅132KB,轻量易用。已有290人学习下载,内容结构清晰、章节连贯,从index.htm入口可循序展开学习,每页聚焦一个技术点并附可运行示例逻辑,特别适合自学梳理知识脉络、快速查阅开发要点或作为PB项目开发的随身参考手册。
1. 这不是“编程语言”也不是“软件安装包”:PB 教程到底是什么?一个零基础小白的真实困惑
你是不是也搜过“PB教程”,点开一堆页面,发现有的说“PowerBuilder”,有的说“PB开发”,还有人提“数据库前端”“企业级报表”“老系统维护”……越看越懵?别急——这恰恰说明你踩中了绝大多数新手的第一个坑:PB 不是一个孤立的词,而是一整套“怎么用特定工具,把数据变成能点、能查、能打印的业务窗口”的完整动作链。它不是 Python 那种通用语言,也不是微信那种装完就能用的 App;它更像一套“企业级表单组装说明书”:给你砖(数据库里的数据)、水泥(逻辑规则)、图纸(界面布局),教你亲手搭出财务录入页、仓库查询框、客户审批流——而且搭出来的不是网页,是双击就能跑、不依赖浏览器、直接连公司内网数据库的独立程序。适合谁?不是想做抖音算法的程序员,而是刚进某制造企业IT部、被组长塞来一份“把旧Excel报表改成可录入系统”的A同学;或是某高校实验室需要快速做一个设备借用登记界面的研究生。它不炫技,但求稳、求快、求改起来不翻车。今天这份《PB教程全面教程!~~~~~》,就是专为这类人写的“第一块砖怎么拿、第一颗螺丝往哪拧”的实操指南。
2. 先搞懂一个核心概念:PB 不是写代码,是“拖拽+填空+微调”
很多人一听说“教程”,下意识就打开记事本准备敲print("Hello World")——PB 的入门姿势完全相反。它的本质,是用可视化界面“画”出窗口,再用少量脚本“告诉”每个按钮点击后干啥。就像装修:你不用从炼钢开始造门把手,而是选好门、窗、开关面板(PB里的控件),拖到墙上(窗口画布),再接几根线(事件脚本)让按开关时灯亮。下面拆解三个最常卡住新手的环节,用你能立刻感知的方式讲透。
2.1 窗口(Window):你的“工作台”,不是“代码文件”
在 PB 里,你第一个要建的不是.py或.js文件,而是一个Window 对象。它长得就像 Windows 自带的“记事本”窗口:有标题栏、关闭按钮、可拉伸边框。但它内部是空的——你得往里面放东西。
提示:别把它当成“画图软件”。PB 的窗口是“活”的:你放一个文本框(Edit),它就真能输文字;放一个下拉框(DropDownList),它就真能选选项;放一个数据窗口(DataWindow),它就真能连数据库查数据。每放一个,PB 就自动生成对应的数据结构和交互逻辑,你只管“填空”。
2.2 数据窗口(DataWindow):PB 的“心脏”,90% 的活靠它完成
如果说 Window 是房子的框架,DataWindow 就是房子里的厨房+客厅+卧室——它集成了数据显示、增删改查、排序筛选、打印导出所有功能。新手最大的误解,是以为“显示表格”得自己写循环读数据库、拼 HTML 表格。在 PB 里,你只需三步:
- 告诉它连哪个数据库(比如 SQL Server 里的
inventory表); - 拖几个字段名(
item_name,stock_qty,last_update)到画布上; - 点一下“预览”按钮——一个带搜索框、可编辑、能导出 Excel 的完整表格界面就出来了。
它背后自动生成 SQL 查询语句、绑定参数、处理事务,你看到的只是结果。这也是为什么老系统爱用 PB:业务员改个库存数量,点保存,系统自动校验权限、写日志、更新关联表——全封装在 DataWindow 的“提交”事件里,你不用碰一行 SQL。
2.3 事件脚本(Event Script):给按钮“写说明书”,不是写程序
当你双击一个“保存”按钮,PB 弹出的不是代码编辑器,而是一个叫clicked的事件脚本框。这里写的不是复杂算法,而是类似“说明书”的指令:
// 这段脚本的意思是: // 1. 先让当前DataWindow里的数据“提交”到数据库 // 2. 如果成功,弹个提示框说“保存成功” // 3. 如果失败(比如网络断了、字段没填全),弹个错误提示 if dw_1.update() = 1 then messagebox("提示", "保存成功!") else messagebox("错误", "保存失败,请检查网络或必填项") end if注意:dw_1.update()这个函数,PB 已经帮你写好了底层逻辑——它会比对修改前后的数据、生成 UPDATE 语句、执行事务、返回成功/失败。你只需要决定“成功后干啥”“失败后干啥”,不用管怎么连数据库、怎么防重复提交。这就是 PB 的“低代码”底色:把重复的、易错的、平台相关的脏活包死,你只聚焦业务规则。
3. 第一步:不装软件、不配环境,先跑通一个“点一下就弹窗”的例子
很多教程一上来就让你下载 PowerBuilder 安装包、配置 ODBC 数据源、注册许可证……新手直接劝退。其实,PB 入门的第一步,根本不需要数据库,甚至不需要联网。我们用最原始的方式:建一个空窗口,放一个按钮,点它弹出对话框。这个例子能让你 5 分钟内确认“PB 真的能动”,建立信心。下面每一步都对应真实操作,截图位置我用文字描述清楚。
3.1 创建第一个 Window:从“空白画布”开始
- 打开 PowerBuilder(假设你已安装好,版本不影响本例);
- 点菜单
File → New → Window,弹出新建窗口向导; - 选择
Main类型(这是最基础的带标题栏、最小化/关闭按钮的窗口); - 点
OK,出现一个空白矩形区域——这就是你的第一个 Window,标题默认是w_main; - 在窗口顶部标题栏处,双击文字,把
w_main改成我的第一个窗口(这是窗口的显示名称,不是文件名); - 保存:
File → Save As,文件名输入w_helloworld.pbl(.pbl是 PB 的库文件,相当于一个文件夹,存所有窗口、脚本、资源)。
注意:PB 的项目管理是“库(PBL)”驱动的,不是单个文件。你保存的
w_helloworld.pbl就像一个收纳盒,后面所有窗口、函数都会放进去。别担心名字,现在叫什么不重要,能存下来就行。
3.2 拖一个按钮进来:找到“控件板”,别去菜单里找
- 确保窗口
我的第一个窗口处于编辑状态(标题栏是蓝色的); - 看屏幕左侧——那里应该有一个竖着的窄条,叫“控件板(Control Palette)”;
- 找到图标像一个方块加文字的按钮(
CommandButton),鼠标按住它,拖到窗口中央; - 松手,窗口里出现一个矩形按钮,上面写着
cb_1(这是 PB 自动生成的默认名); - 双击按钮上的文字
cb_1,把它改成点我弹窗(这是用户看到的按钮文字); - 选中按钮,按键盘
F4调出属性窗口,在X和Y栏输入100和80(让按钮居中一点,数值不重要,能看见就行)。
3.3 给按钮写第一行脚本:双击按钮,不是右键!
- 保持按钮被选中状态(四周有小方块);
- 关键动作:双击按钮本身(不是右键!不是点菜单!);
- 弹出一个叫
Script的窗口,左上角写着cb_1 → clicked——这表示“当 cb_1 按钮被点击时,执行以下脚本”; - 在光标处输入:
messagebox("欢迎", "恭喜你跑通第一个PB例子!")- 点右上角
OK保存脚本; - 按快捷键
Ctrl + R(Run),或者点菜单Run → Run; - 等几秒,一个新窗口弹出来,标题是“欢迎”,内容是“恭喜你跑通第一个PB例子!”——成了!
解释这行代码:
messagebox()是 PB 内置的“弹窗函数”,括号里两个字符串,第一个是标题栏文字,第二个是窗口里的正文。它不操作数据库、不联网、不读文件,纯粹是 UI 反馈。但正是这种“无依赖”的成功,让你第一次摸到 PB 的脉搏:你控制了界面,你触发了响应,你看到了结果。后面所有复杂功能,都是在这个基础上“叠积木”。
4. 新手必踩的 5 个坑:我当年就是在这儿卡了三天
刚入门时,你以为问题出在“不会写代码”,其实 90% 的时间都耗在“PB 的脾气”上。下面这 5 条,是我带过 20+ 个零基础学员后,总结出的最高频、最隐蔽、最容易让人怀疑人生的坑。每一条都按“你看到什么 → 为什么这样 → 怎么立刻解决”写清楚,照着做,省下至少两天调试时间。
4.1 现象:点了 Run,啥都不弹,连错误提示都没有
原因:PB 默认运行的是“当前活动窗口”,但你可能没把刚建的我的第一个窗口设为“主窗口”。PB 启动时找不到入口,就静默退出。
解决:
- 点菜单
File → Options; - 左侧选
Application; - 右侧找到
Startup Window(启动窗口)这一栏; - 点右侧下拉箭头,从列表里选中你刚保存的
w_helloworld(注意:是窗口名w_helloworld,不是文件名w_helloworld.pbl); - 点
OK,再按Ctrl + R——这次一定弹窗。
4.2 现象:弹窗出来了,但点“确定”后窗口一闪就关,再也打不开
原因:PB 的窗口默认是“模态”(Modal)的,意思是它弹出来后,主程序会等它关掉才继续。但如果你没设置“关闭后做什么”,PB 就认为任务结束,整个程序退出。
解决:
- 在
我的第一个窗口编辑状态下,点菜单Window → Properties; - 切换到
General页签; - 找到
Close选项组,把Close下拉框从Default改成Do not close; - 保存窗口(
Ctrl + S),再运行——弹窗关掉后,主窗口还在,可以继续点按钮。
4.3 现象:按钮文字改了,但运行时还是显示cb_1
原因:你双击按钮改的是“对象名”(Name),不是“显示文字”(Text)。PB 里cb_1是它的身份证号,点我弹窗才是贴在表面的标签。
解决:
- 选中按钮;
- 按
F4打开属性窗口; - 找到
Text属性(不是Name!),把值改成点我弹窗; - 回到窗口画布,看按钮上文字是否实时更新——是的话,就对了。
4.4 现象:脚本里写了messagebox,但运行时报错undefined function
原因:你可能把脚本写在了错误的位置。比如在窗口的open事件里写了messagebox,但open事件是在窗口刚打开时触发,此时按钮还没渲染出来,容易出错;或者你误点了constructor(构造函数),那里面不能直接调 UI 函数。
解决:
- 确保你双击的是按钮本身(不是窗口背景、不是标题栏);
- 弹出的脚本窗口左上角必须显示
cb_1 → clicked(或你按钮的实际名 → clicked); - 如果显示的是
w_helloworld → open,说明你双击错了地方,关掉,重新双击按钮。
4.5 现象:保存后,下次打开 PB,找不到刚才建的窗口
原因:你保存的是.pbl库文件,但 PB 启动时默认加载的是另一个叫library的库(通常是tutorial.pbl)。你的w_helloworld.pbl没被“注册”进当前工作区。
解决:
- 点菜单
File → Open; - 文件类型选
Library (*.pbl); - 找到你存的
w_helloworld.pbl,选中它; - 点
Open——这时左边“库画布”(Library Painter)里会出现w_helloworld库; - 双击它,里面就会列出你建的
w_helloworld窗口,双击即可编辑。
5. 接下来学什么?一张表理清“PB 新手学习路径图”
跑通第一个弹窗只是热身,真正的 PB 开发是围绕“数据”展开的。但千万别一上来就啃数据库连接、SQL 语法、事务隔离级别——那等于让刚学会握笔的孩子直接临摹《兰亭序》。我建议你按这张表,分四步走,每一步都确保“能看见效果、能解释原理、能独立复现”,不贪多,不跳步。
| 学习阶段 | 核心目标 | 必做练习(15 分钟内可完成) | 关键验证点 | 我的血泪经验 |
|---|---|---|---|---|
| 阶段一:窗口与控件 | 熟悉 PB 界面,掌握 5 种基础控件的拖放与属性设置 | 1. 新建窗口; 2. 拖入 Edit(单行文本框)、StaticText(静态文字)、CheckBox(复选框)、HScrollBar(滚动条)、Picture(图片);3. 分别改它们的 Text或Name属性;4. 保存并运行,确认所有控件可见 | 窗口打开后,5 个控件都按预期显示,文字可读、图片可见、滚动条可拖动 | 别纠结“每个属性什么意思”。先记住:Text是用户看到的字,Name是代码里叫它的名字,X/Y是位置,Width/Height是大小。其他属性留到要用时再查。 |
| 阶段二:数据窗口初探 | 理解 DataWindow 是什么,学会用它显示本地数据(不连数据库) | 1. 在窗口里拖一个DataWindow控件(图标是表格);2. 双击它,弹出 DataWindow 设计器; 3. 选 Quick Select→External(外部数据源)→OK;4. 在设计器里右键 → Insert → Column,添加 3 列,列名填姓名、年龄、城市;5. 点 Preview,手动在表格里输几行测试数据;6. 关闭设计器,回到窗口,按 Ctrl+R运行 | 运行后,窗口里出现一个带表头的表格,你输的测试数据完整显示,可编辑、可增行 | External数据源是 PB 最友好的入门方式:它不依赖任何数据库,数据存在内存里,改完直接预览。这才是新手该有的“所见即所得”。 |
| 阶段三:简单交互逻辑 | 让控件之间“说话”,实现基础业务流 | 1. 在阶段二的窗口里,加一个CommandButton,文字为“统计人数”;2. 双击按钮,写脚本: powerbuilder<br>long ll_count<br>ll_count = dw_1.rowcount()<br>messagebox("统计", "当前共 " + string(ll_count) + " 条记录")<br>3. 运行,点按钮 | 点按钮后,弹窗正确显示你输的行数(比如输 3 行,就显示“当前共 3 条记录”) | rowcount()是 DataWindow 最常用函数之一,它返回当前显示的行数。string()函数把数字转成文字,才能和+拼接。这两招,够你应付 80% 的简单统计需求。 |
| 阶段四:连真实数据库(可选) | 把 DataWindow 接到 SQL Server / Oracle,让数据“活”起来 | 1. 确保你有本地 SQL Server(如 Express 版)和一个测试库(如testdb);2. 在 PB 里点 Database → Profile,新建一个 ODBC 连接,填服务器名、用户名、密码、数据库名;3. 在 DataWindow 设计器里,把数据源从 External换成SQL Select,写一句SELECT name, age FROM users;4. 点 Preview,看是否从数据库读出数据 | Preview 时,表格里显示的是数据库users表的真实数据,不是你手动输的测试数据 | 这步不是必须的!很多内部工具根本不需要连库,用External加脚本逻辑就能满足。等你真有需求了,再配数据库,不早不晚。 |
从那以后我每次教新人,都强制他们先完成“阶段一”的 5 个控件练习,再碰 DataWindow。因为一旦跳过这步,后面所有“为什么按钮不响应”“为什么文字不显示”的问题,根源都在控件属性没理解透。PB 的强大在于封装,但封装的前提是你知道“封装了什么”。希望帮到你。
本文还有配套的精品资源,点击获取