foxpro数据库:在PB中使用FoxPro数据库的思路方法

  Power Builder 是十分优秀用于客户/服务器环境信息管理系统开发工具其优秀的处不仅是可以开发基于客户/服务器模式系统而且简单、易学Power Builder 自身是没有数据库管理系统(DBMS)它是首先通过区别驱动联接区别数据库再通过这种联接实现对数据管理Power Builder同时随盘附带有个小型数据库管理系统:SQL Anywhere所以用户也可以直接开发用于单机完整信息管理系统

---- 本人以前曾开发过基于FoxPro环境下数据库系统但FoxPro编程太麻烦不但要处理数据管理而且还要花大量精力处理输入、输出格式等但有着可视化编程环境Power Builder却区别处理输入、输出是件相当简单事情于是本人偿试用Power Builder来管理以前数据库 c在Power Builder系统中使用FoxPro数据库有两种思路方法:是利用ODBC联接FoxPro数据库;另种思路方法是将FoxPro数据库转换到SQL Anywhere数据格式

---- 、 利用ODBC联接FoxPro数据库

---- 在Power Builder中直接访问FoxPro数据库只能通过ODBC方式

---- 在开发环境下可以直接在PowerBar画板上配置ODBC联接FoxPro数据库思路方法如下:



单击Configure ODBC工具钮

在Installed Drivers目录框中选择:Microsoft Foxpro Driver (*.dbf)

单击“Create”按钮

命名数据源名、选择版本

取消“使用当前工作目录”选项

单击选定目录选择被联接数据库所在目录

确定退出
---- 通过ODBC方式联接FoxPro数据库定要满足FoxPro数据库格式即数据库文件结构必须是:“32字节文件描述 若干个32字节字段描述 结构描述结束符(0D) 记录1记录2…… 文件结束符(1A)”由此看来传统DBF数据库文件均可通过该方式联接对于Visual FoxPro环境下建立表(Table)其结构和传统数据库结构是区别它在字段描述结束符(0D)和记录的间加上了 2百多个字节内容但在未纳入VFP数据库(Dbc)的前其内容为“00”此时仍可以通过这种方式联接旦纳入数据库中该段字节已被填上了其它内容无法再联接

---- 在Power Builder应用使用事务处理对象来联接数据库这种事务处理对象即有默认SQLCA用户也可以自己生成以方便访问多个数据库中使用事务处理对象时般必须先指明DBMS、DbParm两个属性对于FoxPro数据库还必须指明 Database、 userid、servername、几个属性点是和访问其他类型数据库区别地方

sqlca.dbms="ODBC" // 指定联接方式ODBC
sqlca.database="D:\prg\pubdata" // 指定被联接数据库所在目录
sqlca.userid="public" // 用户识别号都为 public
sqlca.servername="FOXPRO" // 服务器名:均为FOXPRO
sqlca.dbparm="Connect='DSN=tscxs'" //数据源名

connect using sqlca; // 实施联接
……
---- 通过对FoxPro数据库联接用户便可以在Power Builder开发环境下、应用中使用这些数据库快速地开发出自己信息管理系统实现对这些数据库维护和管理

---- 2、 将DBF文件转换为SQL Anywhere DB文件格式

---- 在Power Builder环境下附带有个数据库系统——SQL Anywhere在Power Builder中利用它用户可以直接建立、维护数据库在SQL Anywhere中数据库结构虽然和VFP区别但概念是即:数据库是系统中相关各种数据这些数据又因区别用途组织成区别这些表共同构成数据库和传统数据库(DBF)相类比PB、VFP中表即是传统意义数据库PB、VFP中数据库类似于传统数据库(DBF)文件所在目录SQL Anywhere中提供了将传统DBF文件转换为该系统下数据库文件(DB)中工具为了实现这转换用户必须先建立个新再将DBF格式文件内容导入该表中

---- 对于DBF文件必须是传统意义上数据库如FoxPro、dBase、FoxBASE环境下数据库文件该种数据库文件严格遵循“数据文件数据库结构+数据库记录”这格式其结构如下:“32字节文件描述 若干个32字节字段描述 结构描述结束符(0D) 记录1记录2…… 文件结束符(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 // 第个字段:名、类
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)中操作步骤如下:

在PB 中建立新表

打开新建

单击数据库画板中“数据操作(Data manipulation)”按钮

选择菜单:Rows ? Import

从“文件类型”下拉框中选择dbaseII & III(*.dbf)

选择被导入文件所在目录及文件名

单击“打开”按钮

系统将打开指定文件将该文件中所有记录导入新建表中
---- 但系统不提供直接将导入数据保存在本数据库(表)中如果要将导入记录保存为SQL Anywhere 环境下数据库(表)中可以先将导入数据行以SQL格式保存在 .sql 类型文件中在利用SQL语句将这些数据行插入新表中步骤如下:
按上面所列步骤导入数据库(DBF)文件中数据

选择菜单:File ? Save Row As …

在“存为类型”列表框中选择:SQL

选择保存路径输入保存文件名单击保存

关闭“Data manipulation”窗口回到数据库画板

单击“DB Administration”(数据库管理器)

选择菜单:File ? Open

确信文件类型为:SQL (*.sql)

选择第4步中所保存文件单击“打开”按钮

删除文件起始部分条SQL语句:CREATE TABLE

单击“Execute”(执行)按钮系统将把原数据库中所有行插入到新表中
---- 需要注意新建表在字段设置上必须和原DBF文件中字段保持即:
新表中字段数必须等于或大于原DBF文件中字段数

新表中字段顺序要和原文件中字段顺序即使新表中字段数更多但新字段必须放在最后

新表和旧文件中字段名可以不

新表中数据类型必须和旧表中数据类型兼容: ? 数值 ? 数字数字 ? ……

数据格式相如两个文件中日期格式必须

新表中字段长度必须能容纳旧数据库文件中对应字段中数据如:旧数据库某字段宽度为C20但库中所有记录在该字段实际最长为14那么新表中字段宽度至少应为C14
---- 如果你愿意也可以将原FoxPro中数据库先转换到TXT格式文件再将TXT格式文件导入SQL Anywhere数据库(表)中不过TXT文件中条记录独占各字段间必须用Tab键(符)隔开其导入思路方法和DBF文件中数据导入思路方法类似
---- 以上两种办法均可实现在Power Builder下访问FoxPro数据库但两种思路方法的间有些区别的处:

从系统需求来看:第种方式使用ODBC直接访问DBF文件只要Power Builder基本系统即可不需要安装数据库管理系统(DBMS);而第 2种方式必须安装SQL Anywhere系统

从运行效率来看:第种方式速度要慢种方式稍快笔者在应用中比较了两种方式在速度上差异:将FoxPro系统中个有15000余条记录数据库用第种方式联接、在数据窗口控制中显示(Retieve)记录需要6秒钟左右后来又用第 2种方式:在SQL Anywhere 中新建个表将这15000条记录导入表中联接、显示记录需要时间为3-4秒对另个拥有19万余条记录FoxPro数据库直接使用ODBC联接、显示时间为85秒钟
---- 使用Power Builder 主要优势体现在建立客户/服务器模式系统上对于单机系统、规模较小系统可能大多数人不会想到它但如果你觉得FoxPro太老土Visual FoxPro又太难学不妨试试Power Builder
Tags:  pb数据库 foxpro数据库命令 foxpro数据库软件 foxpro数据库

延伸阅读

最新评论

发表评论