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

一、概述
要调整一个驱动程序的行为,你可以使用一个驱动程序配置文件或TFDPhysXxxDriverLink组件。大部分关于驱动程序配置文件的讨论也适用于TFDPhysXxxDriverLink组件。
二、驱动程序配置文件
驱动程序配置文件是一个标准的INI文本文件。它只能被手动编辑。基本上,驱动程序配置文件允许你:
调整基本驱动程序的参数(部分名称=基本驱动程序ID)。
引入一个新的虚拟驱动,它是一组保存在新名称下的基本驱动参数(部分名称=新的虚拟驱动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连接定义参数的值。一个虚拟驱动允许应用程序可以:
在不同的连接中与不同版本的DBMS客户端软件一起工作,在同一个应用程序运行中建立,例如连接到InterBase和Firebird。
选择DBMS客户端软件的明确版本,例如使用安装在工作站上的许多LIBMYSQL.DLLs之一。
设置需要指定参数的驱动程序,例如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。 |
IB/FB
|
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组件的模块被加载之前,很难加载带有链接组件的模块。因此,链接组件会正确配置驱动程序。