You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi无法找到数据库驱动:连接dBase遇TDBXError异常求助

Delphi连接dBase数据库驱动识别异常问题解决

问题描述

在Delphi中连接dBase数据库时触发TDBXError异常,提示信息为:Unknown driver: Microsoft dBase Driver (*.dbf)。使用的测试代码如下:

uses
  Data.DB, Data.SqlExpr, Vcl.Dialogs;
var
  SQLConnection1: TSQLConnection;
  SQLQuery1: TSQLQuery;
begin
  SQLConnection1 := TSQLConnection.Create(nil);
  SQLQuery1 := TSQLQuery.Create(nil);
  try
    SQLConnection1.ConnectionName := 'dBase'; // 自定义的DSN名称
    SQLConnection1.DriverName := 'Microsoft dBase Driver (.*dbf)'; // 尝试过多个驱动名称
    SQLConnection1.LibraryName := 'C:\Windows\SysWOW64\odbcjt32.dll';
    SQLConnection1.Params.Add('Database=C:\DB');
    // 此处曾填写用户名和密码
    SQLConnection1.Open;
    SQLQuery1.SQLConnection := SQLConnection1;
    SQLQuery1.SQL.Text := 'SELECT 2-2'; // 测试语句
    SQLQuery1.Open;

    while not SQLQuery1.Eof do
    begin
      SQLQuery1.Next;
    end;
  finally
    SQLQuery1.Free;
    SQLConnection1.Close;
    SQLConnection1.Free;
  end;
  readln;
end.

已完成的排查操作:

  • 确认项目为32位应用程序
  • 验证C:\DB目录下存在dBase相关数据文件
  • 尝试配置系统DSN并设置SQLConnection1.ConnectionName,问题未解决

解决方法

1. 修正驱动名称拼写错误

代码中DriverName的参数为Microsoft dBase Driver (.*dbf),存在明显拼写错误,正确的驱动名称应为Microsoft dBase Driver (*.dbf)(将.*dbf改为*.dbf),拼写错误会直接导致驱动无法被识别。

2. 避免DSN与直接驱动配置冲突

如果已经通过ConnectionName指定了系统DSN,无需再手动设置DriverName和LibraryName——DSN配置中已包含这些信息,同时设置会引发配置冲突。简化后的代码如下:

SQLConnection1.ConnectionName := 'dBase'; // 确保该DSN在32位ODBC管理器中配置
// 移除DriverName和LibraryName的赋值代码
SQLConnection1.Params.Add('Database=C:\DB');
// 若DSN未配置用户名密码,再添加对应参数
SQLConnection1.Open;

3. 确认32位ODBC驱动的正确配置

由于使用的是32位Delphi程序,必须在32位ODBC数据源管理器中配置DSN:

  • 运行C:\Windows\SysWOW64\odbcad32.exe(注意不是系统默认的64位管理器)
  • 检查系统DSN中的dBase条目,确认驱动选择为Microsoft dBase Driver (*.dbf),且数据库路径指向C:\DB
  • 直接在ODBC管理器中测试DSN连接,排除驱动本身的故障

4. 改用Delphi自带的Borland dBase驱动(备选方案)

如果微软ODBC驱动仍存在兼容性问题,可尝试使用Delphi自带的Borland驱动,无需额外安装ODBC组件:

SQLConnection1.DriverName := 'DBase';
SQLConnection1.LibraryName := 'dbexpdb.dll'; // Delphi自带的驱动库
SQLConnection1.Params.Add('DriverID=53');
SQLConnection1.Params.Add('Database=C:\DB');
SQLConnection1.Open;

内容的提问来源于stack exchange,提问作者Дима

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 07:40:21