在Delphi中使用DBF数据

来源:岁月联盟 编辑:zhu 时间:2008-11-17
 Delphi是美国Inprise 公司开发的功能强大的Windows 应用程序开发工具。她是可视化应用程序开发环境、可重用性面向对象编程语言、快速编译器和数据库技术的完美结合。

  由于Delphi具有运行速度快、功能强大、易于学习和使用且开发迅速等特点,并支持XML和HTML,支持 Web 和Internet的开发,一直受到广大用户的喜爱。

  ---- 国内PC机上使用最普及历史最长的数据库是DBF格式的数据库,即是dBASE II、dBASE III和FoxPro中使用的数据库格式。为了充分利用已有的数据库资源,并能在Delphi环境下开发功能更强的应用软件,本文将讨论如何在Delphi中使用DBF数据库(数据表)以及其转换的方法。

  ---- 一、直接使用DBF格式的数据库

  ---- 若将DBF格式的数据库或表作为应用程序开发中的数据资源,应在Delphi中的"BDE Administrator"数据库引擎中用DBASE或FOXPRO作为配置参数,这样就可以在Delphi中修改和直接访问DBF数据,参见BDE配置工具图(略)。

  ---- 二、转换成Delphi环境中的Paradox数据表

  ---- Delphi开发工具允许用户创建和访问Paradox 和Local InterBase等服务器的数据库应用,这里我们讨论将DBF转换成Paradox 数据库的方法。

  ---- 1、使用数据库桌面Database Desktop --Delphi提供的辅助工具之一

  ---- 用Database Desktop(参见图2)的复制功能来实现转换,其操作过程如下: 1)选用菜单"Tools/Utilities/Copy…",将出现"Copy"对话框,让用户指定将要转换的DBF源文件,这里我们选择了student.dbf文件,并按下"OK"键。

  ---- 2)这时,出现"Copy to" 对话框,选择目标文件名或在文件名编辑框里输入一个新目标文件名,并给出Paradox数据文件的扩展名.db。

 ---- 3)然后选择"Copy"按钮。

  ---- 此时,Database Desktop将DBF数据student.dbf转换成了Paradox 的student.db数据。转换过程中,其数据结构的字段类型变化参照表1。

  ---- 表1:

  在DBF的字段类型 转换成Paradox字段类型

  ------------------------------------------

C Alpha
F(浮点型) Number
N Number
L Logical
D Date
Memo Memo
OLE OLE
Binary Graphic
-----------------------------------------

  ---- Paradox 确保从DBF备注字段转换来的数值是文本格式,否则如含有其他类型的数据,就应该使用Add功能添加该备注字段到相应的Paradox BLOB类型字段中。

  ---- 同样,也可以将Paradox数据库表转换成DBF格式,其字段类型将按参照表2自动地转化。如果生成的DBF不含有索引文件、浮点类型字段和备注字段,则Database Desktop 将产生一个dBASE III数据库表;如果生成的DBF表含有OLE或二进制字段类型,则Database Desktop 将产生Windows的DBF数据库表;否则将生成一个dBASE IV数据库表。

  ---- 表2:

  -----------------------------------------------------

  在Paradox中的字段类型 转换成DBF字段类型 备注

  ----------------------------------------------------

Alpha C
Number N(20.4)
Money N(20.4)
Short N(6.0)
Long Integer N(11.0)
BCD N(20.4)
Date D
Time C(8)
Timestamp C(30)
Memo Memo
Formatted Memo Memo 格式丢失
Graphic Binary
OLE OLE
Logical Logical
Autoincrement Number
Binary Memo 不能显示数据
Bytes Memo 不能显示数据

-----------------------------------------------------

  ---- 2、使用数据管道Datapump --Delphi提供的辅助工具之一

  ---- 用数据管道的移动功能可以实现DBF数据库表转换成Paradox的数据,其操作过程如下:

  ---- 1)使用Borland数据库引擎BDE,为源数据库和目标数据库各建立一个别名;

  ---- 2)启动数据管道Data Pump,在其向导程序中指定源数据库的别名或路径;

  ---- 3)指定目标数据库的别名;

  ---- 4)从源数据库中选择要移动的数据表(可以选择一个或多个),这里我们选择student.dbf;

  ---- 5)通过按钮"Modify Mapping Information for Selected Item",修改数据表的结构信息,以适应目标数据表的需求。当选择此按钮,进入"Modify Fields"对话框,从而可以逐一选择DBF数据表的字段名,并修改成所需的Paradox 数据类型,以及目标数据库中不支持的字段类型、索引和数据的完整性等。

  ---- 6)单击"Upsize"按钮,使DBF数据表移动到Paradox 。

  ---- 7)浏览数据移动结果,若有不满意之处,可以在目标数据表中直接修改;或者观察"Report"对话框显示的移动过程的详细记载,若满足需求,击"Write a copy of this report to file"按钮,输入文件名student.db而保存转换的结果。

  ---- 除了DBF和Paradox 数据之外,Data Pump也可以应用到其他的PC数据库或SQL Server数据库之间的转换。

  ---- 3、使用Delphi数据访问部件(Data Access)中的BatchMove控件 BatchMove控件具有对成批的记录、整个数据库表进行移动、拷贝和删除操作,但是它不能复制源数据文件的索引和纠错规则等。将DBF 数据库转换成Paradox的数据表操作过程如下:

 

  ---- 1)在Database Desktop 中建立Paradox 数据表student.db 的表结构,使其字段顺序等与DBF格式的student.dbf相对应。

  ---- 2)在Delphi数据访问部件Data Access中选择两个控件Table,并分别将Table1和Table2连接到源数据文件student.dbf 和目标文件student.db。

  ---- 3)在Delphi数据访问部件Data Access中选择控件BatchMove放在一个Form上。

  ---- 4)将BatchMove的Mode属性设置为batCopy(功能:复制源文件数据到目标文件中)。

  ---- 5)设置Source 属性为Table1,Destination属性为 Table2。

  ---- 6)用鼠标右击控件BatchMove,选择弹出式菜单中的"Execute"项,此时,执行复制功能,即将DBF数据库转换成Paradox 数据表。

  ---- 以上仅向同仁交流我在Delphi编程中的一点体会,且希望在编程过程中互通经验,共振我国软件之兴。

图片内容