如何在Delphi中访问DBF数据库
xBase是所有源自原始dBase数据库格式(.dbf)的数据库的通用术语。该列表包括Visual FoxPro、Clipper、dBase III、dBase IV等。这些数据库被非正式地称为dBase克隆,因为它们是dBase的直接后代或模仿者。
xBase数据库将大量格式化数据以结构化形式存储在.dbf数据文件中。在类似dBase的数据库中,.dbf文件存储一个表,其中保留了表描述,字段描述符和记录。类似dBase的现代数据库还具有用于大型文本字段(备忘录)、命令、过程、备份等的文件。
有各种各样的数据库引擎可以读取和操作DBF文件中的数据,但是它们都不了解xBase数据库的所有格式--这些数据库引擎中的大多数都可以与xBase系列的一种或两种方言进行交互。与其他现有解决方案不同,UniDAC中的Delphi数据访问提供程序TDBFUniProvider提供了一种引擎,该引擎可以理解许多类似dBase的数据库中的DBF文件。
UniDAC是一款通用数据库访问组件,提供了多个数据库的直接访问,如针对Windows的Delphi, C++Builder, Lazarus (以及 Free Pascal) , Mac OS X, iOS, Android, Linux和64和32位的FreeBSD等等。
TDBFUniProvider提供对xBase数据库的直接访问,并支持所有dBase本机数据类型(字符、数字、逻辑、数据、备忘录)。它用作SQL引擎,对数据库文件执行命令。项目中的Delphi代码被编译成可执行文件,不需要任何其他外部文件即可访问和操作DBF文件中的数据。
用于访问xBase数据库文件的UniDAC Delphi组件支持多种数据库文件格式:dBase III、dBase IV、dBase V、dBase VII、FoxPro2、Visual FoxPro、Clipper、CodeBase、HiPer-Six。除了允许开发人员使用标准的SQL-92语法外,它还提供了一种快速的方法来重建表并删除已删除的记录,以减小数据库文件的大小。
创建示例Delphi应用程序以访问xBase数据库
我们将创建一个简单的Delphi应用程序,该应用程序将以Visual FoxPro格式连接到数据库,并在单击"显示"按钮时显示表中的记录。
1、在"工具选项板"中找到TUniConnection、TUniQuery、TUniDataSource、TDBFUniProvider、TDBGrid和TButton组件,并将它们放在表单上。
2、双击表单上的UniConnection1组件。切换到"选项"选项卡,然后将"直接"设置为True。
3、返回到"连接"选项卡,选择"DBF"作为提供程序,然后输入计算机上Visual FoxPro(或任何其他xBase数据库)的路径。单击连接。如果一切顺利,红色圆圈将变为绿色。
4、在UniDataSource1中,将DataSet属性设置为UniQuery1。
5、选择DBGrid1并将DataSource属性设置为UniDataSource1。
6、选择UniQuery1组件并将Connection属性设置为UniConnection1,然后双击该组件并输入SQL语句。单击确定。
7、将按钮的"标题"属性更改为"在对象检查器中显示"。双击按钮,切换到"代码"选项卡并添加UniQuery1.Open; 到OnClick事件处理程序代码。
8、按F9编译并运行您的应用程序。如果程序编译没有错误,则应该看到已编译的表单应用程序。单击显示以获取并查看Visual FoxPro表中的数据。
检索损坏的数据和元数据
xBase方言历史悠久,.dbf文件中的字段包含不受支持的类型的数据的情况并不罕见。要解决任何不受支持的数据类型的问题,UniDAC提供了两个选项:IgnoreDataErrors和IgnoreMetaDataErrors。前一个选项在打开DBF表时强制UniDAC忽略损坏的数据错误,而后一个选项使UniDAC忽略元数据错误:当两个选项都设置为True时,将跳过损坏的数据,并正确地检索其他数据。
另一个功能是当您不完全了解DBF文件的格式时(DBFFormat选项中的dfAuto值),可以自动确定xBase数据库的方言。
支持的目标平台
UniDAC支持多个目标平台:您可以创建一个访问DBF数据库的应用程序,用于:
Windows,32位和64位
macOS,32位和64位
iOS,32位和64位
Android,32位和64位
Linux,32位和64位