Fragen zu TFDManager und TFDConnection

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu FAQ (FireDAC)

Dieses Thema enthält eine Liste mit Fragen und Antworten zu TFDManager und TFDConnection.

F1: Ich habe eine Basisdatenmodulklasse mit TFDManager. Wenn ich eine abgeleitete Klasse erstelle, erhalte ich den Fehler "Anwendung darf nur einen FDManager enthalten". Was ist falsch?

A: In einer Anwendung darf nur ein FDManager enthalten sein. Verweisen Sie auf ein Singleton-Objekt mit der Funktion "FDManager", anstatt FDManager explizit ihn Ihren Klassen zu erstellen.

F2: Meine Projektgruppe enthält mehrere verschiedene Delphi-Projekte (Anwendungen), jedes mit einem eigenen Datenmodul und FDManager. Wenn ich gleichzeitig mehrere dieser Datenmodule öffne, (zum Kopieren oder Vergleichen von Elementen), dann erhalte ich einen Fehler mit der Meldung, dass nur ein FDManager pro Anwendung zulässig ist, und es wird sofort ein FDManager aus einem der Datenmodule entfernt.

A: Benötigen Sie TFDManager wirklich? In einer Anwendung muss TFDManager nicht explizit erstellt werden. Nur die Optionen und die Konfigurationsdateien müssen beim Entwurf festgelegt werden.

F3: Meine FDManager gehen dauernd verloren, und ich muss sie neu erstellen. Kann das behoben werden?

A: Nein, das kann nicht behoben werden, weil nur ein TFDManager zur Entwurfszeit oder zur Laufzeit erstellt werden darf. Wenn Sie mehrere TFDManager haben, erkennt FireDAC nicht, welcher verwendet werden soll. Siehe auch F1.

F4: Unterstützt FireDAC ein Verbindungs-Pooling?

A: Ja. Im Allgemeinen werden beim Verbindungs-Pooling alle geöffneten "physischen" Verbindungen in einen Pool gestellt, und wenn TFDConnection.Connected auf True gesetzt wird, entnimmt FireDAC eine "physische" Verbindung aus dem Pool und verwendet sie. Wenn TFDConnection.Connected auf False gesetzt wird, wird die "physische" Verbindung nicht geschlossen, sondern zurück in den Pool gestellt.

Fügen Sie Ihrer Verbindungsdefinition einfach "Pooled=True" hinzu, um das Verbindungs-Pooling in FireDAC zu verwenden. Weitere Aktionen sind nicht erforderlich. Einzelheiten finden Sie unter Multithreading.

F5: Der Verbindungseditor scheint FDPhysFBDriverLink1.VendorLib zu ignorieren und einen hart-codierten Treiber zu verwenden.

A: Sie müssen VendorLib festlegen, bevor die erste Verbindung diesen Treiber verwendet. Nach dem eine Verbindung hergestellt ist, wird der DBMS-Client geladen.

Überprüfen Sie zur Entwurfszeit, ob TFDPhysXXXDriverLink an erster Stelle in der Erstellungsfolge für Datenmodule/Formulare steht, um sicherzustellen, dass die TFDPhysXXXDriverLink-Eigenschaften verwendet werden. Dann starten Sie die Delphi-IDE neu (optional).

Verwenden Sie zur Laufzeit die Treiberverknüpfungsmethode "Release":

 FDConnection1.Close;
 ...
 FDConnectionN.Close;
 
 FDPhysFBDriverLink.VendorLib := 'c:\fbclient.dll';
 FDPhysFBDriverLink.Release;
 
 FDConnection1.Open;
 ...
 FDConnectionN.Open;

Eine weitere Möglichkeit stellt die Definition eines virtuellen Treibers dar. Weitere Einzelheiten finden Sie unter Konfigurieren von Treibern. Zum Beispiel:

 [FB_Embedded]
 BaseDriverID=FB
 VendorLib = C:\fb\fbembed.dll

Verwenden Sie zur Entwurfszeit den FB_Embedded-Treiber als DriverID. Zur Laufzeit können Sie auch die "FDDrivers.ini" verwenden oder einfach TFDPhysXXXDriverLink konfigurieren.