Konfigurieren von Treibern (FireDAC)

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Arbeiten mit Verbindungen (FireDAC)


Beschreibt, wie die FireDAC-DBMS-Treiber konfiguriert und DBMS-Client-Bibliotheken festgelegt werden. Geben Sie zum Einbinden eines FireDAC-Treibers in eine Anwendung den DBMS-Client für den Treiber und andere optionale Parameter an. Eine Anwendung kann die TFDPhysXxxDriverLink-Komponenten und/oder eine externe Konfigurationsdatei verwenden.

Allgemeine Informationen

Sie können mit einer Treiberkonfigurationsdatei oder den TFDPhysXxxDriverLink-Komponenten das Verhalten eines Treibers anpassen. Die meisten Informationen zur Treiberkonfigurationsdatei gelten auch für die TFDPhysXxxDriverLink-Komponenten.

Treiberkonfigurationsdatei

Ein Treiberkonfigurationsdatei ist eine Standard-INI-Textdatei. Sie kann nur manuell bearbeitet werden. Grundsätzlich ermöglicht die Treiberkonfigurationsdatei:

  • Das Anpassen von Parametern eines Basistreibers (Abschnittsname = Basistreiber-ID).
  • Das Einführen eines neuen virtuellen Treibers, der aus einem Satz der Parameter des unter einem neuen Namen gespeicherten Basistreibers besteht (Abschnittsname = ID des neuen virtuellen Treibers).

FireDAC sucht nach einer Treiberkonfigurationsdatei an den folgenden Orten:

  • FDDrivers.ini im Anwendungs-EXE-Ordner.
  • Wenn die Datei dort nicht gefunden wird, sucht FireDAC nach der im Registrierungsschlüssel HKCU\Software\Embarcadero\FireDAC\DriverFile angegebenen Datei. Standardmäßig ist dies C:\Benutzer\Öffentlich\Dokumente\Appmethod\FireDAC\FDDrivers.ini.

Zur Entwurfszeit verwendet FireDAC die Datei im "Bin"-Ordner von Appmethod oder in einem in der Registrierung angegebenen Ordner.

Basis- und virtuelle Treiber

Der Abschnittsname in der Treiberkonfigurationsdatei ist die ID des Basistreibers (z. B. "ASA" oder "Ora"), der Basistreiber verwendet die im zugehörigen Abschnitt angegebenen Parameterwerte.

Wenn der Abschnittsname keine ID eines der Basistreiber (z. B. "Ora815" oder "MySQL510_Embedded") ist, registriert FireDAC einen neuen virtuellen Treiber. Der virtuelle Treiber verwendet eine Implementierung des im Parameter BaseDriverID angegebenen Basistreibers und die angegebenen Parameterwerte. Eine virtuelle Treiber-ID kann dann als Wert des Verbindungsdefinitionsparameters DriverID verwendet werden. Ein virtueller Treiber ermöglicht, dass die Anwendung:

  • Mit unterschiedlichen Versionen der DBMS-Client-Software in verschiedenen, bei derselben Anwendungsausführung eingerichteten Verbindungen arbeitet, um beispielsweise eine Verbindung zu InterBase und Firebird herzustellen.
  • Eine bestimmte Version der DBMS-Client-Software auswählt, beispielsweise eine von mehreren auf dem Arbeitsplatz-Computer installierten LIBMYSQL.DLL-Dateien.
  • Treiber einrichtet, für die Parameter angegeben werden müssen, beispielweise MySQL Embedded-Server.

Treiberkonfigurationsparameter

Die folgenden Parameter können angegeben werden:

Parameter Beschreibung Für Treiber
VendorHome[ | Win32 | Win64 | MacOS32 | MacOS64 | UIX32 | UIX64] Der Namen des Oracle-Standardverzeichnisses (Oracle Home). Ora
Der Basisinstallationspfad. Zum Beispiel: C:\ib\ib2007. IB
Der Basisinstallationspfad für einen normalen Server. Zum Beispiel: C:\MySQL\MySQL5-1-7. Oder der Pfad zur Datei LIBMYSQLD.DLL für einen eingebetteten Server. Zum Beispiel: C:\MyAPP\MySQL. MySQL
VendorLib[ | Win32 | Win64 | MacOS32 | MacOS64 | UIX32 | UIX64] Der Name der API-DLL der DBMS-Client-Software. Zum Beispiel: libmysql510.dll.
  • Ora
  • IB/FB
  • MySQL
ODBCDriver ODBC-Treibername. Zum Beispiel: Adaptive Server Anywhere 8.0. Alle ODBC-basierten Treiber
ODBCAdvanced Zusätzliche Parameter des ODBC-Treibers. Der String besteht aus ODBC-Treiberparametern, die durch ";" getrennt sind. Die möglichen Werte finden Sie in der Dokumentation des Herstellers. Alle ODBC-basierten Treiber
EmbeddedArgs Argumente für den eingebetteten MySQL-Server. Der String besteht aus MySQL-Serverargumenten, die durch ";" getrennt sind. Die möglichen Werte finden Sie in der Dokumentation des Herstellers. Zum Beispiel: --datadir=./data;--language=./;--skip-innodb. MySQL
EmbeddedGroups Konfigurationsdateigruppen für den eingebetteten MySQL-Server. MySQL
NLSLang Wert der Oracle-Umgebungsvariable NLS_LANG. Ora
TNSAdmin Wert der Oracle-Umgebungsvariable TNS_ADMIN. Ora

Wenn für nicht ODBC-basierte Treiber VendorLib festgelegt ist, verwendet FireDAC die angegebene DLL. Wenn VendorHome angegeben ist, wird die DLL mit dem Standardnamen aus dem Unterordner "Bin" verwendet. Wenn keine angegeben ist, wird eine DLL mit dem Standardnamen aus:

  • dem primären Standardverzeichnis (Oracle Home) für den Ora-Treiber
  • dem äußerst linken Ordner in der PATH-Umgebungsvariable, der die DLL enthält, für andere Treiber

verwendet. Zusätzlich können Sie ein Suffix angeben, das eine Plattform bezeichnet.

Wenn für ODBC-basierte Treiber ODBCDriver festgelegt ist, verwendet FireDAC den angegebenen Treiber. Ist kein Treiber angegeben, wird ein Standardtreibername verwendet.

Beispiel des Inhalts einer Treiberkonfigurationsdatei

 [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

Konfigurieren von Treibern im Code

Sie können FireDAC-Treiber auch zur Laufzeit im Anwendungscode konfigurieren. Legen Sie dazu die geeignete TFDPhysXXXDriverLink-Komponente auf dem Formular ab. Diese Komponente hat Eigenschaften mit denselben Namen wie die Parameter in der Treiberkonfigurationsdatei. Die Eigenschaften der Verknüpfungskomponente müssen vor dem ersten Öffnen einer Verbindung zu einem DBMS über diesen Treiber festgelegt werden. Das folgende Codebeispiel zeigt, wie der Firebird-Treiber zur Laufzeit konfiguriert wird:

 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;

Wenn eine Verbindung über einen Treiber hergestellt wurde und eine Anwendung zu einem anderen DBMS-Client wechseln muss:

  • schließen Sie alle Verbindungen für diesen Treiber.
  • rufen Sie die Methode Release
der Treiberverknüpfung auf.
  • ändern Sie die erforderlichen Verknüpfungseigenschaften.

Die nächste Verbindung über diesen Treiber verwendet die neuen Verknüpfungseigenschaften. Das folgende Codebeispiel zeigt, wie die Firebird-Treiberkonfiguration zur Laufzeit geändert wird:

 FDConnection1.Close;
FDPhysFBDriverLink1.Release;
FDPhysFBDriverLink1.VendorLib := 'C:\fbclient.dll';
FDConnection1.Open;

Hinweis: Es ist möglich, Treiber mit Verknüpfungskomponenten zur Entwurfszeit zu konfigurieren. Dies wird aber nicht empfohlen, weil es schwierig ist, ein Modul mit einer Verknüpfungskomponente zu laden, bevor alle anderen Module mit den FireDAC-Komponenten geladen werden. Die Verknüpfungskomponente konfiguriert den Treiber ordnungsgemäß.

Siehe auch