转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件使用 >> 常用软件 >> 正文
在PB中使用FoxPro数据库的方法         

在PB中使用FoxPro数据库的方法

作者:闵涛 文章来源:闵涛的学习笔记 点击数:947 更新时间:2009/4/24 21:42:58
P> 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数据库,方法如下:

  1. 单击Configure ODBC工具钮
  2. 在Installed Drivers目录框中选择:Microsoft Foxpro Driver (*.dbf)
  3. 单击“Create”按钮
  4. 命名数据源名、选择版本
  5. 取消“使用当前工作目录”选项
  6. 单击选定目录,选择被联接数据库所在的目录
  7. 确定退出

  通过ODBC方式联接的FoxPro的数据库,一定要满足FoxPro的数据库格式,即数据库文件结构必须是:“32字节文件描述 若干个32字节的字段描述 结构描述结束符(0D) 记录1,记录2,…… 文件结束符(1A)”。由此看来,传统的DBF数据库文件均可通过该方式联接。对于Visual FoxPro环境下建立的表(Table),其结构与传统的数据库结构是不同的,它在字段描述结束符(0D)与记录之间加上了二百多个字节的内容,但在未纳入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="Connectstring=DSN=tscxs" //数据源名

connect using sqlca; // 实施联接
……

  通过对FoxPro数据库的联接,用户便可以在Power Builder开发环境下、应用程序中使用这些数据库,快速地开发出自己的信息管理系统,实现对这些数据库的维护与管理。

  二、 将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 // 第二个字段 
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)中的表,操作步骤如下:

  1. 在PB 中建立新表
  2. 打开新建的表
  3. 单击数据库画板中的“数据操作(Data manipulation)”按钮
  4. 选择菜单:Rows ? Import
  5. 从“文件类型”下拉框中选择dbaseII & III(*.dbf)
  6. 选择被导入文件所在的目录及文件名
  7. 单击“打开”按钮
  8. 系统将打开指定的文件,将该文件中的所有记录导入新建的表中。
  但系统不提供直接将导入数据保存在本数据库(表)中。如果要将导入的记录保存为SQL Anywhere 环境下的数据库(表)中,可以先将导入数据行以SQL格式保存在 .sql 类型文件中,在利用SQL语句将这些数据行插入新表中。步骤如下:
  1. 按上面所列的步骤导入数据库(DBF)文件中的数据
  2. 选择菜单:File ? Save Row As …
  3. 在“存为类型”列表框中选择:SQL
  4. 选择保存路径,输入保存文件名,单击保存
  5. 关闭“Data manipulation”窗口,回到数据库画板
  6. 单击“DB Administration”(数据库管理器)
  7. 选择菜单:File ? Open
  8. 确信文件类型为:SQL (*.sql)
  9. 选择第4步中所保存的文件,单击“打开”按钮
  10. 删除文件起始部分的第一条SQL语句:CREATE TABLE
  11. 单击“Execute”(执行)按钮,系统将把原数据库中的所有行插入到新表中。
  需要注意的是,新建的表在字段设置上必须与原DBF文件中的字段保持一致,即:
  1. 新表中的字段数必须等于或大于原DBF文件中的字段数
  2. 新表中的字段顺序要与原文件中的字段顺序一样,即使新表中字段数更多,但新的字段必须放在最后
  3. 新表与旧文件中字段名可以不一样
  4. 新表中的数据类型必须与旧表中的数据类型兼容:字符 ? 字符, 数值 ? 数字,数字 ? 字符……
  5. 数据格式相一致,如两个文件中的日期格式必须一致
  6. 新表中字段长度必须能容纳旧数据库文件中的对应字段中的数据,如:旧数据库某一字段宽度为C20,但库中所有记录在该字段的实际最长为14,那么,新表中的字段宽度至少应为C14
  如果你愿意,也可以将原FoxPro中的数据库先转换到TXT格式文件,再将TXT格式的文件导入SQL Anywhere数据库(表)中,不过TXT文件中一条记录独占一行,各字段间必须用Tab键(符)隔开,其导入方法与DBF文件中数据的导入方法类似。

  以上两种办法均可实现在Power Builder下访问FoxPro数据库,但两种方法之间有些不同之处:

  1. 从系统需求来看:第一种方式使用ODBC直接访问DBF文件,只要Power Builder基本系统即可,不需要安装数据库管理系统(DBMS);而第二种方式必须安装SQL Anywhere系统。
  2. 从运行效率来看:第一种方式速度要慢一些,后一种方式稍快。笔者在应用程序中比较了两种方式在速度上的差异:将FoxPro系统中的一个有15000余条记录的数据库,用第一种方式联接、在数据窗口控制中显示(Retieve)记录,需要6秒钟左右,后来又用第二种方式:在SQL Anywhere 中新建一个表,将这15000条记录导入表中,联接、显示记录,需要时间为3-4秒。对另一个拥有19万余条记录的FoxPro数据库直接使用ODBC,联接、显示的时间为85秒钟。
  使用Power Builder 的主要优势体现在建立客户/服务器模式的系统上。对于一般的单机系统、规模较小的系统,可能大多数人不会想到它。但如果你觉得FoxPro太老土,Visual FoxPro又太难学的的话,不妨试试Power Builder。


[办公软件]在sybase中插入图片、PDF、文本文件  [办公软件]安装Sybase ASE
[办公软件]linux指令大全(完整篇)  [办公软件]Linux新手入门常用命令大全
[办公软件]在RedHat Linux 9里安装gaim0.80  [办公软件]浅谈Linux 下Java 1.5 汉字方块问题解决方法
[办公软件]Linux程序员必读:中文化与GB18030标准  [办公软件]linux指令大全
[办公软件]制作Linux启动盘的四种方法  [办公软件]Linux文件系统的反删除方法
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · 办公软件  · 系统软件
    · 常用软件  · 聊天工具
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台