Delphi 中 FireDAC 数据库连接(配置驱动程序)

文章介绍了如何配置FireDAC数据库驱动,包括使用配置文件和TFDPhysXxxDriverLink组件。它详细阐述了驱动程序配置文件的结构,如基本和虚拟驱动的设定,以及如何通过代码在运行时调整驱动。此外,还提及了驱动的搜索路径和关键参数如VendorHome和VendorLib。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述了如何配置FireDAC DBMS驱动,包括如何指定DBMS客户端库。要将一个FireDAC驱动链接到一个应用程序,需要指定DBMS客户端到驱动和其他可选参数。一个应用程序可以使用TFDPhysXxxDriverLink组件和/或一个外部配置文件。

一、概述

要调整一个驱动程序的行为,你可以使用一个驱动程序配置文件或TFDPhysXxxDriverLink组件。大部分关于驱动程序配置文件的讨论也适用于TFDPhysXxxDriverLink组件。

二、驱动程序配置文件

驱动程序配置文件是一个标准的INI文本文件。它只能被手动编辑。基本上,驱动程序配置文件允许你:

  1. 调整基本驱动程序的参数(部分名称=基本驱动程序ID)。

  1. 引入一个新的虚拟驱动,它是一组保存在新名称下的基本驱动参数(部分名称=新的虚拟驱动ID)。

FireDAC在以下地方搜索驱动程序的配置文件。

  • 应用程序EXE文件夹中的FDDrivers.ini。

  • 如果没有找到上述文件,它会寻找注册表键HKCU\Software\Embarcadero\FireDAC\DriverFile中指定的文件。默认情况下,这是C:\Users\Public\Documents\Embarcadero\Studio\FireDAC\FDDrivers.ini。

在设计时,FireDAC使用RAD Studio Bin文件夹中的文件或注册表中指定的文件。

三、基本和虚拟驱动

如果驱动程序配置文件中的部分名称是基本驱动程序的ID(例如,"ASA "或 "Ora"),则基本驱动程序使用相应部分中指定的参数值。

如果部分名称不是任何基本驱动的ID(例如,"Ora815 "或 "MySQL510_Embedded"),FireDAC会注册一个新的虚拟驱动。该虚拟驱动使用由BaseDriverID参数和指定参数值指定的基本驱动的实现。然后,一个虚拟驱动ID可以作为DriverID连接定义参数的值。一个虚拟驱动允许应用程序可以:

  1. 在不同的连接中与不同版本的DBMS客户端软件一起工作,在同一个应用程序运行中建立,例如连接到InterBase和Firebird。

  1. 选择DBMS客户端软件的明确版本,例如使用安装在工作站上的许多LIBMYSQL.DLLs之一。

  1. 设置需要指定参数的驱动程序,例如MySQL嵌入式服务器。

四、驱动程序配置参数

可以指定以下参数:

Parameter

Description

Applied to Drivers

VendorHome[ | Win32 | Win64 | MacOS32 | MacOS64 | UIX32 | UIX64]

Oracle Home 名称.

Ora

基本安装路径。例如。C:\ib\ib2007

IB

普通服务器的基本安装路径。例如。C:\MySQL\MySQL5-1-7。或者嵌入式服务器的LIBMYSQLD.DLL的路径。例如:C:\MyAPP\MySQL。

MySQL

VendorLib[ | Win32 | Win64 | MacOS32 | MacOS64 | UIX32 | UIX64]

DBMS客户端软件的API DLL名称。例如:libmysql510.dll。

  • Ora

IB/FB

  • MySQL

ODBCDriver

ODBC驱动程序名称。比如说。Adaptive Server Anywhere 8.0。

All ODBC based

ODBCAdvanced

ODBC驱动程序的附加参数。

该字符串由ODBC驱动参数组成,用?;?分隔。关于可能的值,请查看供应商的文档。

All ODBC based

EmbeddedArgs

MySQL嵌入式服务器参数。

该字符串由MySQL服务器参数组成,以?;?分隔。对于可能的

值,请查看供应商的文档。例如: --datadir=./data;--language=./;--skip-innodb.

MySQL

EmbeddedGroups

MySQL嵌入式服务器配置文件组。

MySQL

NLSLang

Oracle NLS_LANG环境变量值。

Ora

TNSAdmin

Oracle TNS_ADMIN环境变量值。

Ora

对于非基于ODBC的驱动,如果指定了VendorLib,FireDAC就会使用指定的DLL。如果指定了VendorHome,则使用Bin子文件夹中具有默认名称的DLL。如果没有指定,则使用来自Bin子文件夹的具有默认名称的DLL。

Ora 驱动程序的主要 Oracle 主页。

PATH环境变量中最左边的文件夹,包含DLL,用于其他驱动程序。

此外,你可以指定一个后缀,指定一个平台。

对于基于ODBC的驱动程序,如果指定了ODBCDriver,FireDAC将使用指定的驱动程序。如果没有指定,则使用一个默认的驱动程序名称。

驱动程序配置文件内容样本:

[ASA]
; ASA base driver will use specified ODBC driver
ODBCDriver=Adaptive Server Anywhere 8.0

[Ora815]
; Ora815 virtual driver will use specified Oracle Home
BaseDriverID=Ora
VendorHomeWin32=OraHome815
VendorHomeWin64=OraHome815_64

[MySQL327]
; MySQL327 virtual driver will use specified LIBMYSQL.DLL
BaseDriverID=MySQL
VendorLib=c:\LIBMYSQL327.DLL

[MySQL510_Embedded]
; MySQL510_Embedded virtual driver will use specified MySQL embedded library and arguments
BaseDriverID=MySQL
VendorLib=c:\LIBMYSQLD.DLL
EmbeddedArgs=--datadir=./data;--language=./;--skip-innodb;--skip-networking

[MSSQL_2000]
; MSSQL_2000 virtual driver will use specified ODBC driver
BaseDriverID=MSSQL
ODBCDriver=SQL SERVER
ODBCAdvanced=

[FB21]
; FB21 virtual driver will use specified Firebird client library
BaseDriverID=FB
VendorLibWin32=C:\ib\fb21\bin\fbclient.dll
VendorLibWin64=C:\ib\fb21_64\bin\fbclient.dll

[FB21_Embedded]
; FB21_Embedded virtual driver will use specified Firebird client library
BaseDriverID=FB
VendorLib=C:\ib\fb21_embed\bin\fbembed.dll
五、通过代码中配置驱动程序

你也可以在运行时在应用程序代码中配置FireDAC驱动程序。要做到这一点,把适当的TFDPhysXXXDriverLink组件放到你的表单中。它的命名属性与驱动程序配置文件中的参数相同。链接组件的属性必须在通过该驱动打开与DBMS的第一个连接之前进行设置。下面的代码示例显示了如何在运行时配置Firebird驱动程序。

interface

uses
  ..., FireDAC.Phys.FB;

type
  TForm1 = class(TForm)
  ......
    FDPhysFBDriverLink1: TFDPhysFBDriverLink;
    FDConnection1: TFDConnection;
    procedure FormCreate(Sender: TObject);
  ......
  end;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  FDPhysFBDriverLink1.VendorLib := 'C:\ib\fb21_embed\bin\fbembed.dll';

  FDConnection1.ConnectionDefName := 'FB_Demo';
  FDConnection1.Connected := True;
end;

当一个使用驱动的连接已经建立,并且应用程序需要切换到其他DBMS客户端时。

  • 关闭这个驱动上的所有连接。

  • 调用驱动程序的链接释放方法。

  • 改变所需的链接属性。

使用该驱动的下一个连接使用新的链接属性。下面的代码示例显示了如何在运行时改变Firebird驱动的配置:

FDConnection1.Close;
FDPhysFBDriverLink1.Release;
FDPhysFBDriverLink1.VendorLib := 'C:\fbclient.dll';
FDConnection1.Open;
注意:
尽管在设计时可以使用链接组件来配置驱动程序,但我们不推荐这样做,因为在任何其他带有FireDAC组件的模块被加载之前,很难加载带有链接组件的模块。因此,链接组件会正确配置驱动程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海纳老吴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值