Metadaten abrufen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Verbindungen zu Datenbanken einrichten - Index


Alle Datenbank-Verbindungskomponenten können Listen von Metadaten vom Datenbankserver abrufen, obwohl sie unterschiedliche Metadatentypen erhalten. Die Methoden, die Metadaten abrufen, füllen eine Stringliste mit den Namen verschiedener Entitäten, die auf dem Server zur Verfügung stehen. Sie nutzen diese Informationen, um es beispielsweise Ihren Benutzern zu ermöglichen, zur Laufzeit dynamisch eine Tabelle auszuwählen.

Mithilfe einer TADOConnection-Komponente können Sie Metadaten über die Tabellen und Stored Procedures, die im ADO-Datenspeicher zur Verfügung stehen, zur Laufzeit auswählen. Anschließend können Sie diese Informationen beispielsweise nutzen, um den Benutzern zu ermöglichen, zur Laufzeit dynamisch eine Tabelle oder eine Stored Procedure auszuwählen.

Verfügbare Tabellen auflisten

Die Methode GetTableNames kopiert eine Liste der Tabellennamen in ein bereits existierendes Stringlisten-Objekt. Das kann beispielsweise genutzt werden, um ein Feld mit Tabellennamen zu füllen, aus denen der Benutzer die zu öffnende Tabelle auswählen kann. Die folgende Zeile füllt ein Listenfeld mit den Namen aller Tabellen in der Datenbank:

 MyDBConnection.GetTableNames(ListBox1.Items, False);

GetTableNames verarbeitet zwei Parameter: die Stringliste, die mit Tabellennamen gefüllt wird, sowie einen Booleschen Parameter, der angibt, ob die Liste auch die Systemtabellen oder nur normale Tabellen berücksichtigen soll. Beachten Sie, dass nicht alle Server Metadaten in Systemtabellen ablegen, deshalb könnte eine leere Liste zurückgegeben werden, wenn Sie nur Systemtabellen abfragen.

Hinweis: Für die meisten Datenbankverbindungskomponenten gibt GetTableNames eine Liste aller verfügbaren Tabellen außer den Systemtabellen zurück, wenn der zweite Parameter gleich False ist. Für TSQLConnection haben Sie jedoch mehr Kontrolle darüber, welcher Typ der Liste hinzugefügt wird, wenn Sie nicht nur die Namen von Systemtabellen abrufen. Bei Verwendung von TSQLConnection werden die Namenstypen, die der Liste hinzugefügt werden, durch die Eigenschaft TableScope gesteuert. TableScope gibt an, ob die Liste einige oder alle der folgenden Tabellen enthalten soll: normale Tabellen, Systemtabellen, Synonyme und Ansichten.

Die Felder einer Tabelle auflisten

Die Methode GetFieldNames füllt eine existierende Stringliste mit den Namen aller Felder (Spalten) einer angegebenen Tabelle. GetFieldNames verarbeitet zwei Parameter, nämlich den Namen der Tabelle, deren Felder aufgelistet werden sollen, sowie eine existierende Stringliste, die mit Feldnamen gefüllt werden soll:

 MyDBConnection.GetFieldNames('Employee', ListBox1.Items);

Verfügbare Stored Procedures auflisten

Um eine Liste aller in der Datenbank enthaltenen Stored Procedures zu erzeugen, verwenden Sie die Methode GetProcedureNames. Diese Methode verarbeitet einen Parameter: die zu füllende und bereits vorhandene Stringliste:

 MyDBConnection.GetProcedureNames(ListBox1.Items);

Hinweis: GetProcedureNames wird nur für TADOConnection und TSQLConnection unterstützt.

Verfügbare Indizes auflisten

Um alle für eine bestimmte Tabelle definierten Indizes aufzulisten, verwenden Sie die Methode GetIndexNames. Diese Methode verarbeitet zwei Parameter: die Tabelle, deren Indizes aufgelistet werden sollen, und eine bereits vorhandene Stringliste, in die diese eingetragen werden sollen.

 SQLConnection1.GetIndexNames('Employee', ListBox1.Items);

Hinweis: GetIndexNames wird nur für TSQLConnection unterstützt, obwohl die meisten tabellarischen Datenmengen eine äquivalente Methode anbieten.

Parameter einer Stored Procedure auflisten

Um eine Liste aller Parameter zu erhalten, die für eine bestimmte Stored Procedure definiert sind, verwenden Sie die Methode GetProcedureParams. Diese Methode füllt ein TList-Objekt mit Zeigern auf Parameterbeschreibungsdatensätze, wo jeder Datensatz einen Parameter einer angegebenen Stored Procedure beschreibt, unter anderem ihren Namen, den Index, den Parametertyp, den Feldtyp usw.

GetProcedureParams verarbeitet zwei Parameter: den Namen der Stored Procedure sowie ein bereits existierendes TList-Objekt, das mit Daten gefüllt werden soll:

 SQLConnection1.GetProcedureParams('GetInterestRate', List1);

Um die der Liste hinzugefügten Parameterbeschreibungen in das vertrautere TParams-Objekt umzuwandeln, rufen Sie die globale Prozedur LoadParamListItems auf. Weil GetProcedureParams die einzelnen Datensätze dynamisch reserviert, muss Ihre Anwendung sie freigeben, wenn sie die Information nicht mehr benötigt. Dazu verwenden Sie die globale Prozedur FreeProcParams.

Hinweis: GetProcedureParams wird nur für TSQLConnection unterstützt.

Siehe auch

Beispiele