Power Builder 是十分优秀
![](/icons/19946de.gif)
用于客户/服务器环境信息管理系统开发工具
![](/icons/19946dou.gif)
其优秀的处不仅是
![](/icons/19946yinwei.gif)
可以开发基于客户/服务器模式
![](/icons/19946de.gif)
系统
![](/icons/19946dou.gif)
而且简单、易学
![](/icons/19946dou.gif)
Power Builder 自身是没有数据库管理系统(DBMS)
![](/icons/19946de.gif)
![](/icons/19946dou.gif)
它是首先通过区别
![](/icons/19946de.gif)
驱动
![](/icons/19946chengxu.gif)
联接区别
![](/icons/19946de.gif)
数据库
![](/icons/19946dou.gif)
再通过这种联接
![](/icons/19946dou.gif)
实现对数据
![](/icons/19946de.gif)
管理
![](/icons/19946dou2.gif)
Power Builder同时随盘附带有
![](/icons/19946yi.gif)
个小型
![](/icons/19946de.gif)
数据库管理系统:SQL Anywhere
![](/icons/19946dou.gif)
所以用户也可以直接开发用于单机
![](/icons/19946de.gif)
完整
![](/icons/19946de.gif)
信息管理系统
---- 本人以前曾开发过基于FoxPro环境下
![](/icons/19946de.gif)
数据库系统
![](/icons/19946dou.gif)
但FoxPro
![](/icons/19946de.gif)
编程太麻烦
![](/icons/19946dou.gif)
不但要处理数据
![](/icons/19946de.gif)
管理
![](/icons/19946dou.gif)
而且还要花大量
![](/icons/19946de.gif)
精力处理输入、输出
![](/icons/19946de.gif)
格式等
![](/icons/19946dou2.gif)
但有着可视化编程环境
![](/icons/19946de.gif)
Power Builder却区别
![](/icons/19946dou.gif)
处理输入、输出是件相当简单
![](/icons/19946de.gif)
事情
![](/icons/19946dou.gif)
于是
![](/icons/19946dou.gif)
本人偿试用Power Builder来管理以前
![](/icons/19946de.gif)
数据库
![](/icons/19946dou2.gif)
c在Power Builder系统中
![](/icons/19946dou.gif)
使用FoxPro
![](/icons/19946de.gif)
数据库有两种思路方法:
![](/icons/19946yi.gif)
是利用ODBC联接FoxPro数据库;另
![](/icons/19946yi.gif)
种思路方法是将FoxPro
![](/icons/19946de.gif)
数据库转换到SQL Anywhere
![](/icons/19946de.gif)
数据格式
----
![](/icons/19946yi.gif)
、 利用ODBC联接FoxPro数据库
---- 在Power Builder中
![](/icons/19946dou.gif)
直接访问FoxPro数据库只能通过ODBC方式
---- 在开发环境下
![](/icons/19946dou.gif)
可以直接在PowerBar画板上配置ODBC
![](/icons/19946dou.gif)
联接FoxPro数据库
![](/icons/19946dou.gif)
思路方法如下:
单击Configure ODBC工具钮
在Installed Drivers目录框中选择:Microsoft Foxpro Driver (*.dbf)
单击“Create”按钮
命名数据源名、选择版本
取消“使用当前工作目录”选项
单击选定目录
![](/icons/19946dou.gif)
选择被联接数据库所在
![](/icons/19946de.gif)
目录
确定退出
---- 通过ODBC方式联接
![](/icons/19946de.gif)
FoxPro
![](/icons/19946de.gif)
数据库
![](/icons/19946dou.gif)
![](/icons/19946yi.gif)
定要满足FoxPro
![](/icons/19946de.gif)
数据库格式
![](/icons/19946dou.gif)
即数据库文件结构必须是:“32字节文件描述 若干个32字节
![](/icons/19946de.gif)
字段描述 结构描述结束符(0D) 记录1
![](/icons/19946dou.gif)
记录2
![](/icons/19946dou.gif)
…… 文件结束符(1A)”
![](/icons/19946dou2.gif)
由此看来
![](/icons/19946dou.gif)
传统
![](/icons/19946de.gif)
DBF数据库文件均可通过该方式联接
![](/icons/19946dou2.gif)
对于Visual FoxPro环境下建立
![](/icons/19946de.gif)
表(Table)
![](/icons/19946dou.gif)
其结构和传统
![](/icons/19946de.gif)
数据库结构是区别
![](/icons/19946de.gif)
![](/icons/19946dou.gif)
它在字段描述结束符(0D)和记录的间加上了 2百多个字节
![](/icons/19946de.gif)
内容
![](/icons/19946dou.gif)
但在未纳入VFP
![](/icons/19946de.gif)
数据库(Dbc)的前
![](/icons/19946dou.gif)
其内容为“00”
![](/icons/19946dou.gif)
此时仍可以通过这种方式联接
![](/icons/19946dou.gif)
![](/icons/19946yi.gif)
旦纳入数据库中
![](/icons/19946dou.gif)
该段字节已被填上了其它内容
![](/icons/19946dou.gif)
无法再联接
---- 在Power Builder应用
![](/icons/19946chengxu.gif)
中
![](/icons/19946dou.gif)
使用事务处理对象来联接数据库
![](/icons/19946dou.gif)
这种事务处理对象
![](/icons/19946dou.gif)
即有默认
![](/icons/19946de.gif)
SQLCA
![](/icons/19946dou.gif)
用户也可以自己生成
![](/icons/19946dou.gif)
以方便访问多个数据库
![](/icons/19946dou2.gif)
在
![](/icons/19946chengxu.gif)
中使用事务处理对象时
![](/icons/19946dou.gif)
![](/icons/19946yi.gif)
般必须先指明DBMS、DbParm两个属性
![](/icons/19946dou.gif)
对于FoxPro数据库
![](/icons/19946dou.gif)
还必须指明 Database、 userid、servername、几个属性
![](/icons/19946dou.gif)
这
![](/icons/19946yi.gif)
点是和访问其他类型
![](/icons/19946de.gif)
数据库区别
![](/icons/19946de.gif)
地方
sqlca.dbms="ODBC" // 指定联接方式ODBC
sqlca.database="D:\prg\pubdata" // 指定被联接数据库所在目录
sqlca.userid="public" // 用户识别号
![](/icons/19946dou.gif)
都为 public
sqlca.servername="FOXPRO" // 服务器名:均为FOXPRO
sqlca.dbparm="Connect
![](/icons/19946string.gif)
='DSN=tscxs'" //数据源名
connect using sqlca; // 实施联接
……
---- 通过对FoxPro数据库
![](/icons/19946de.gif)
联接
![](/icons/19946dou.gif)
用户便可以在Power Builder开发环境下、应用
![](/icons/19946chengxu.gif)
中使用这些数据库
![](/icons/19946dou.gif)
快速地开发出自己
![](/icons/19946de.gif)
信息管理系统
![](/icons/19946dou.gif)
实现对这些数据库
![](/icons/19946de.gif)
维护和管理
---- 2、 将DBF文件转换为SQL Anywhere
![](/icons/19946de.gif)
DB文件格式
---- 在Power Builder环境下
![](/icons/19946dou.gif)
附带有
![](/icons/19946yi.gif)
个数据库系统——SQL Anywhere
![](/icons/19946dou.gif)
在Power Builder中利用它
![](/icons/19946dou.gif)
用户可以直接建立、维护数据库
![](/icons/19946dou2.gif)
在SQL Anywhere中
![](/icons/19946dou.gif)
数据库结构虽然和VFP区别
![](/icons/19946dou.gif)
但概念是
![](/icons/19946yi.gif)
致
![](/icons/19946de.gif)
![](/icons/19946dou.gif)
即:数据库是系统中相关
![](/icons/19946de.gif)
各种数据
![](/icons/19946dou.gif)
这些数据又因区别用途组织成区别
![](/icons/19946de.gif)
表
![](/icons/19946dou.gif)
这些表共同构成数据库
![](/icons/19946dou.gif)
和传统
![](/icons/19946de.gif)
数据库(DBF)相类比
![](/icons/19946dou.gif)
PB、VFP中
![](/icons/19946de.gif)
表即是传统意义
![](/icons/19946de.gif)
数据库
![](/icons/19946dou.gif)
PB、VFP中
![](/icons/19946de.gif)
数据库类似于传统
![](/icons/19946de.gif)
数据库(DBF)文件所在
![](/icons/19946de.gif)
目录
![](/icons/19946dou2.gif)
SQL Anywhere中提供了将传统
![](/icons/19946de.gif)
DBF文件转换为该系统下
![](/icons/19946de.gif)
数据库文件(DB)中
![](/icons/19946de.gif)
表
![](/icons/19946de.gif)
工具
![](/icons/19946dou2.gif)
为了实现这
![](/icons/19946yi.gif)
转换
![](/icons/19946dou.gif)
用户必须先建立
![](/icons/19946yi.gif)
个新
![](/icons/19946de.gif)
表
![](/icons/19946dou.gif)
再将DBF格式
![](/icons/19946de.gif)
文件内容导入该表中
---- 对于DBF文件
![](/icons/19946dou.gif)
必须是传统意义上
![](/icons/19946de.gif)
数据库
![](/icons/19946dou.gif)
如FoxPro、dBase、FoxBASE环境下
![](/icons/19946de.gif)
数据库文件
![](/icons/19946dou2.gif)
该种数据库文件严格遵循“数据文件
![](/icons/19946dd.gif)
数据库结构+数据库记录”这
![](/icons/19946yi.gif)
格式
![](/icons/19946dou2.gif)
其结构如下:“32字节文件描述 若干个32字节
![](/icons/19946de.gif)
字段描述 结构描述结束符(0D) 记录1
![](/icons/19946dou.gif)
记录2
![](/icons/19946dou.gif)
…… 文件结束符(1A)”
03 62 0A 07 02 00 00 00 - 81 00 4C
00 00 00 00 00 // 文件描述:时间、长
00 00 00 00 00 00 00 00 - 00 00 00
00 00 00 00 00 度、记录长、记录数
4E 41 4D 45 00 00 00 00 - 00 00 00
43 01 00 00 00 // 第
![](/icons/19946yi.gif)
个字段:名、类
28 00 00 00 00 00 00 00 - 00 00 00
00 00 00 00 00 型、长、起始位
41 55 54 48 4F 52 00 00 - 00 00 00
43 29 00 00 00 // 第 2个字段
0F 00 00 00 00 00 00 00 - 00 00 00
00 00 00 00 00 ……
0D 20 50 6F 77 65 72 42 - 75 69 6C
64 65 72 20 50 // 结构结束符(0D)、
72 6F 67 72 61 6D 6D 69 - 6E 67 20
20 20 20 20 20 记录1
20 20 20 20 20 20 20 20 - 20 20 4A
6F 68 6E 20 53 ……
6D 69 74 68 20 20 20 20 - 20 1A
// 文件结束符(1A)
---- 将DBF文件直接转换为PB(SQL Anywhere)中
![](/icons/19946de.gif)
表
![](/icons/19946dou.gif)
操作步骤如下:
在PB 中建立新表
打开新建
![](/icons/19946de.gif)
表
单击数据库画板中
![](/icons/19946de.gif)
“数据操作(Data manipulation)”按钮
选择菜单:Rows ? Import
从“文件类型”下拉框中选择dbaseII & III(*.dbf)
选择被导入文件所在
![](/icons/19946de.gif)
目录及文件名
单击“打开”按钮
系统将打开指定
![](/icons/19946de.gif)
文件
![](/icons/19946dou.gif)
将该文件中
![](/icons/19946de.gif)
所有记录导入新建
![](/icons/19946de.gif)
表中
---- 但系统不提供直接将导入数据保存在本数据库(表)中
![](/icons/19946dou2.gif)
如果要将导入
![](/icons/19946de.gif)
记录保存为SQL Anywhere 环境下
![](/icons/19946de.gif)
数据库(表)中
![](/icons/19946dou.gif)
可以先将导入数据行以SQL格式保存在 .sql 类型文件中
![](/icons/19946dou.gif)
在利用SQL语句将这些数据行插入新表中
![](/icons/19946dou2.gif)
步骤如下:
按上面所列
![](/icons/19946de.gif)
步骤导入数据库(DBF)文件中
![](/icons/19946de.gif)
数据
选择菜单:File ? Save Row As …
在“存为类型”列表框中选择:SQL
选择保存路径
![](/icons/19946dou.gif)
输入保存文件名
![](/icons/19946dou.gif)
单击保存
关闭“Data manipulation”窗口
![](/icons/19946dou.gif)
回到数据库画板
单击“DB Administration”(数据库管理器)
选择菜单:File ? Open
确信文件类型为:SQL (*.sql)
选择第4步中所保存
![](/icons/19946de.gif)
文件
![](/icons/19946dou.gif)
单击“打开”按钮
删除文件起始部分
![](/icons/19946de.gif)
第
![](/icons/19946yi.gif)
条SQL语句:CREATE TABLE
单击“Execute”(执行)按钮
![](/icons/19946dou.gif)
系统将把原数据库中
![](/icons/19946de.gif)
所有行插入到新表中
---- 需要注意
![](/icons/19946de.gif)
是
![](/icons/19946dou.gif)
新建
![](/icons/19946de.gif)
表在字段设置上必须和原DBF文件中
![](/icons/19946de.gif)
字段保持
![](/icons/19946yi.gif)
致
![](/icons/19946dou.gif)
即:
新表中
![](/icons/19946de.gif)
字段数必须等于或大于原DBF文件中
![](/icons/19946de.gif)
字段数
新表中
![](/icons/19946de.gif)
字段顺序要和原文件中
![](/icons/19946de.gif)
字段顺序
![](/icons/19946yi.gif)
样
![](/icons/19946dou.gif)
即使新表中字段数更多
![](/icons/19946dou.gif)
但新
![](/icons/19946de.gif)
字段必须放在最后
新表和旧文件中字段名可以不
![](/icons/19946yi.gif)
样
新表中
![](/icons/19946de.gif)
数据类型必须和旧表中
![](/icons/19946de.gif)
数据类型兼容:
![](/icons/19946zifu.gif)
?
![](/icons/19946zifu.gif)
![](/icons/19946dou.gif)
数值 ? 数字
![](/icons/19946dou.gif)
数字 ?
![](/icons/19946zifu.gif)
……
数据格式相
![](/icons/19946yi.gif)
致
![](/icons/19946dou.gif)
如两个文件中
![](/icons/19946de.gif)
日期格式必须
![](/icons/19946yi.gif)
致
新表中字段长度必须能容纳旧数据库文件中
![](/icons/19946de.gif)
对应字段中
![](/icons/19946de.gif)
数据
![](/icons/19946dou.gif)
如:旧数据库某
![](/icons/19946yi.gif)
字段宽度为C20
![](/icons/19946dou.gif)
但库中所有记录在该字段
![](/icons/19946de.gif)
实际最长为14
![](/icons/19946dou.gif)
那么
![](/icons/19946dou.gif)
新表中
![](/icons/19946de.gif)
字段宽度至少应为C14
---- 如果你愿意
![](/icons/19946dou.gif)
也可以将原FoxPro中
![](/icons/19946de.gif)
数据库先转换到TXT格式文件
![](/icons/19946dou.gif)
再将TXT格式
![](/icons/19946de.gif)
文件导入SQL Anywhere数据库(表)中
![](/icons/19946dou.gif)
不过TXT文件中
![](/icons/19946yi.gif)
条记录独占
![](/icons/19946yi.gif)
行
![](/icons/19946dou.gif)
各字段间必须用Tab键(符)隔开
![](/icons/19946dou.gif)
其导入思路方法和DBF文件中数据
![](/icons/19946de.gif)
导入思路方法类似
---- 以上两种办法均可实现在Power Builder下访问FoxPro数据库
![](/icons/19946dou.gif)
但两种思路方法的间有些区别的处:
从系统需求来看:第
![](/icons/19946yi.gif)
种方式使用ODBC直接访问DBF文件
![](/icons/19946dou.gif)
只要Power Builder基本系统即可
![](/icons/19946dou.gif)
不需要安装数据库管理系统(DBMS);而第 2种方式必须安装SQL Anywhere系统
从运行效率来看:第
![](/icons/19946yi.gif)
种方式速度要慢
![](/icons/19946yi.gif)
些
![](/icons/19946dou.gif)
后
![](/icons/19946yi.gif)
种方式稍快
![](/icons/19946dou2.gif)
笔者在应用
![](/icons/19946chengxu.gif)
中比较了两种方式在速度上
![](/icons/19946de.gif)
差异:将FoxPro系统中
![](/icons/19946de.gif)
![](/icons/19946yi.gif)
个有15000余条记录
![](/icons/19946de.gif)
数据库
![](/icons/19946dou.gif)
用第
![](/icons/19946yi.gif)
种方式联接、在数据窗口控制中显示(Retieve)记录
![](/icons/19946dou.gif)
需要6秒钟左右
![](/icons/19946dou.gif)
后来又用第 2种方式:在SQL Anywhere 中新建
![](/icons/19946yi.gif)
个表
![](/icons/19946dou.gif)
将这15000条记录导入表中
![](/icons/19946dou.gif)
联接、显示记录
![](/icons/19946dou.gif)
需要时间为3-4秒
![](/icons/19946dou2.gif)
对另
![](/icons/19946yi.gif)
个拥有19万余条记录
![](/icons/19946de.gif)
FoxPro数据库直接使用ODBC
![](/icons/19946dou.gif)
联接、显示
![](/icons/19946de.gif)
时间为85秒钟
---- 使用Power Builder
![](/icons/19946de.gif)
主要优势体现在建立客户/服务器模式
![](/icons/19946de.gif)
系统上
![](/icons/19946dou2.gif)
对于
![](/icons/19946yi.gif)
般
![](/icons/19946de.gif)
单机系统、规模较小
![](/icons/19946de.gif)
系统
![](/icons/19946dou.gif)
可能大多数人不会想到它
![](/icons/19946dou2.gif)
但如果你觉得FoxPro太老土
![](/icons/19946dou.gif)
Visual FoxPro又太难学
![](/icons/19946de.gif)
![](/icons/19946de.gif)
话
![](/icons/19946dou.gif)
不妨试试Power Builder
延伸阅读
最新评论