Festlegen von Optionen (FireDAC)

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Arbeiten mit Verbindungen (FireDAC)


Beschreibt, warum FireDAC durch den Optionssatz zu einem flexiblen Datenbank-Framework wird und wie die Optionen verwendet werden. FireDAC umfasst eine Vielzahl von Optionen, die in einem hierarchischen Optionssystem organisiert sind. Die meisten Optionen können mit ihren Vorgabewerten verwendet werden.

Themen

Thema Beschreibung
Datentypzuordnung FireDAC stellt ein flexibles anpassbares Datentypzuordnungssystem bereit, mit dem Sie die Migration zu FireDAC vereinfachen oder Datendarstellungen optimieren können.

Beschreibung

Die FireDAC-Optionen sind in fünf Gruppen eingeteilt:

  • FetchOptions – Abrufoptionen steuern, wie Komponenten und Phys-Schichtanweisungen Daten von einem DBMS abrufen. Beispielsweise können alle Datensätze auf einmal oder nach Bedarf abgerufen werden.
  • FormatOptions – Formatoptionen steuern, wie DBMS-Datentypen zu FireDAC-Datentypen und umgekehrt zugeordnet werden. Beispielsweise kann ein Programmierer eine Zuordnung für Oracle NUMBER (38) zu dtBCD oder zu dtInt64 festlegen. Weitere Einzelheiten finden Sie unter Datentypzuordnung.
  • UpdateOptions – Aktualisierungsoptionen steuern, wie FireDAC Aktualisierungen im DBMS einträgt. Beispielsweise kann FireDAC bei einer Aktualisierung alle Felder in einer Tabelle oder nur die geänderten aktualisieren.
  • ResourceOptions – Ressourcenoptionen steuern, wie Systemressourcen verwendet werden (Datenmengenpersistenz und andere). Beispielsweise kann eine FireDAC-Phys-Schichtanweisung asynchron oder blockiert ausgeführt werden.
  • TxOptions – Transaktionsoptionen steuern, wie Transaktionen durchgeführt werden. Beispielsweise können Sie sie im ReadCommitted-Isolationsmodus ausführen. TxOptions verwenden keine Vererbung von Optionswerten.

Da FireDAC viele Optionen einführt, kann das Konfigurieren von Datenmengen oder Anweisungen zu einer komplexen und fehleranfälligen Programmierung führen. Zur Lösung dieses Problems verwendet FireDAC ein Vererbungsmodell für Optionswerte von übergeordneten zu untergeordneten Objekten. Die Optionswerte werden von einem übergeordneten Objekt an ein untergeordnetes Objekt (oben-unten) weitergereicht. Wenn einer niedrigeren Ebene explizit keine Optionswerte zugewiesen sind, wird ein Wert einer höheren Ebene, der ein Wert zugewiesen ist, oder von der obersten Ebene übernommen. FireDAC hat die folgenden Ebenen:

Ein Manager ist die oberste Ebene, eine Verbindung die Zwischenebene und eine Anweisung/Datenmenge die unterste Ebene. Wenn Sie eine bestimmte Manager- oder Verbindungsoption festlegen, erben alle Datenmengen daher diesen Wert. Dies gilt nur, wenn ein Programmierer nicht explizit der Datenmengenoption einen Wert zugewiesen hat.

Das Flag TxxxOptions.AssignedValues steuert die Vererbung. Wenn eine Option auf dieser Ebene geändert wird, dann wird ein entsprechendes Flag in AssignedValues einbezogen. Wenn kein Flag einbezogen ist, dann wird der Optionswert von einer höheren Ebene vererbt. Wenn das Flag aus AssignedValues ausgeschlossen wird, dann erbt die Option ihren Wert wieder von der höheren Ebene.

Die Optionen können für eine persistente Verbindungsdefinition mit FDExplorer festgelegt werden. Nach dem Herstellen der Verbindung wird die Optionskonfiguration für die TFDCustomConnection-Optionen angewendet.

Beispiel 1

Die Zuordnung der Datentypen von den DBMS-Typen zu den in FormatOptions definierten Client-Typen wird von allen Anweisungen von ihrer Verbindung geerbt.

 with oConnection.Options.FormatOptions do begin
   OwnMapRules := True;
   MapRules.Clear;
   with MapRules.Add do begin
     PrecMax := 19;
     PrecMin := 4;
     SourceDataType := dtFmtBCD;
     TargetDataType := dtCurrency;
   end;
 end;

Beispiel 2

Eine Data-Warehouse-Anwendung könnte einen Hochleistungsmodus zum Abrufen mit den FetchOptions der Managerebene einrichten. Auf diese Weise erben alle Verbindungen und all deren Anweisungen diese Optionen.

 with FDManager.FetchOptions do begin
   Items := [];
   Cache := [];
   RowsetSize := 1000;
 end;

Siehe auch