Abfragen von Metadaten (FireDAC)
Nach oben zu Arbeiten mit Metadaten (FireDAC)
Inhaltsverzeichnis
Verwenden von TFDConnection
TFDConnection enthält die GetXxxxNames-Methoden, mit denen die Datenbankobjektnamensliste zurückgegeben werden kann:
- GetCatalogNames – die Katalogliste
- GetSchemaNames – die Schemaliste
- GetTableNames – die Tabellen- und Sichtenliste
- GetFieldNames – die Tabellenfelderliste
- GetKeyFieldNames – die Liste mit den Primärschlüsseln der Tabelle
- GetGeneratorNames – die Generator-/Sequenzliste
- GetPackageNames – die Package-Liste
- GetStoredProcNames – die Liste mit den gespeicherten Prozeduren
Diese Methoden können in folgenden Situationen verwendet werden:
- Für die Anwendung sind Objektnamen erforderlich.
- Die Anwendung benötigt keinen zusätzlichen Informationen zu diesen Objekten.
Zum Beispiel: Die Methode "GetTableNames" ruft die Tabelle, Sicht und Synonymnamen aus der aktuelle Datenbank und dem Schema ab. Sie können diese Methode mit dem folgenden Code aufrufen:
FDConnection1.GetTableNames('Northwind', 'dbo', '', Memo1.Lines);
Mit den Argumenten "ACatalogName" und/oder "ASchemaName" beschränken Sie die zurückgegebene Liste auf den angegebenen Katalog und/oder das Schema. Wenn diese Argumente nicht angegeben sind, dann werden alle "sichtbaren" Objekte oder die Objekte in der aktuellen Datenbank/dem aktuellen Schema zurückgegeben. Das ist vom DBMS abhängig. Einige DBMSs (wie MS Access) geben möglicherweise Fehler zurück, wenn das Schema/der Katalog angegeben ist und nicht vom DBMS unterstützt wird.
Des Weiteren kann die Anwendung Objektlisten mit dem Argument "AScopes" auf Basis des Objektgültigkeitsbereichs beschränken. Das Argument "APattern", das die Suchmaske "LIKE" darstellt, wird für Objektnamen angewendet.
In der Klasse TFDCustomManager befindet sich eine ähnliche Methode.
Weitere Einzelheiten finden Sie in der FireDAC-Demo: FireDAC\Samples\Comp Layer\TFDConnection\GetFieldNames.
Verwenden von TFDMetaInfoQuery
TFDMetaInfoQuery ist die Datenmengen-Komponente, die das Abfragen von und Suchen in Metadatenlisten ermöglicht. Legen Sie dazu die Eigenschaften Connection, MetaInfoKind und optional CatalogName, SchemaName, BaseObjectName und ObjectName fest, und öffnen Sie die Datenmenge. Die Liste der Tabellen rufen Sie mit dem folgenden Code ab:
FDMetaInfoQuery1.Connection := FDConnection1;
FDMetaInfoQuery1.MetaInfoKind := mkTables;
FDMetaInfoQuery1.Open;
Eine Beschreibung der Datenmengenstruktur finden Sie im Thema Metadatenstruktur. Wenn ein bestimmter Metadatentyp nicht von einem DBMS unterstützt wird, z. B. unterstützt SQL Server "mkGenerators" nicht, wird eine leere Datenmenge zurückgegeben. Die Metadaten-Datenmenge ist schreibgeschützt und kann nicht bearbeitet werden.
Zwischenspeichern von Metadaten
Die abgerufenen Metadaten werden von FireDAC pro Verbindung zwischengespeichert. Dies wird durch das Einbeziehen von fiMeta in FetchOptions.Cache gesteuert.
Durch Ausschließen von fiMeta aus FetchOptions.Cache wird der Metadaten-Zwischenspeicher nicht ungültig. Alle zwischengespeicherten Metadaten verbleiben bis zur nächsten Verwendung im Zwischenspeicher. Mit TFDConnection.RefreshMetadataCache aktualisieren Sie den Metadaten-Zwischenspeicher für ein angegebenes Objekt oder insgesamt.
Aktueller Katalog und aktuelles Schema
Mit TFDConnection.ConnectionIntf.CurrentCatalog und CurrentSchema rufen Sie den aktuellen Katalog- und Schemanamen ab. Weisen Sie diesen Eigenschaften neue Werte zu, um den aktuellen Katalog oder das Schema zu ändern.
Mit MetaCurCatalog und MetaCurSchema können Sie die von der Datenbanksitzung zurückgegebenen Informationen überschreiben. Bei manchen Datenbanken können diese Parameter für die Angabe korrekter Werte erforderlich sein, weil die API falsche Werte zurückgibt.