Metadaten in eine dbExpress-Datenmenge laden

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Auf dbExpress Schema-Informationen zugreifen


Um unidirektionale Datenmengen mit Metadaten vom Datenbankserver zu laden, müssen Sie zunächst angeben, welche Daten Sie sehen wollen. Dazu verwenden Sie die Methode SetSchemaInfo. Diese Methode verarbeitet drei Parameter:

  • Den Typ der Schema-Informationen (Metadaten), die Sie abrufen wollen. Dabei kann es sich um eine Liste der Tabellen (stTables), eine Liste der Systemtabellen (stSysTables), eine Liste der Stored Procedures (stProcedures), eine Liste der Felder in einer Tabelle (stColumns), eine Liste der Indizes (stIndexes) oder eine Liste der von einer Stored Procedure verwendeten Parameter (stProcedureParams) handeln. Jeder Informationstyp verwendet eine andere Feldgruppe zur Beschreibung der Listeneinträge. Weiter Einzelheiten zu den Strukturen dieser Datenmengen finden Sie unter Die Struktur von Metadaten-Datenmengen.
  • Falls Sie Informationen über Felder, Indizes oder Stored Procedures abrufen, den Namen der Tabelle oder der Stored Procedure, auf die sie sich beziehen. Wenn Sie andere Arten von Schema-Information abrufen, ist dieser Parameter gleich nil.
  • Ein Muster, mit dem jeder zurückgegebene Name übereinstimmen muss. Bei diesem Muster handelt es sich um ein SQL-Muster, wie beispielsweise 'Cust%', das die Platzhalterzeichen '%' (das für einen String beliebiger Zeichen beliebiger Länge steht) und '_' (das für ein einzelnes beliebiges Zeichen steht). Wenn Sie in einem Muster ein literales Prozent- oder Unterstrichzeichen verwenden wollen, geben Sie es doppelt an (%% oder __). Falls Sie kein Muster verwenden wollen, kann dieser Parameter gleich nil sein.

Wenn Sie Schema-Information über Tabellen (stTables) abrufen, kann das Ergebnis normale Tabellen, Systemtabellen, Ansichten und/oder Synonyme beschreiben, abhängig von dem Wert der Eigenschaft TableScope der SQL-Verbindung.

Der folgende Aufruf fordert eine Tabelle an, die alle Systemtabellen auflistet (dabei handelt es sich um Servertabellen, die Metadaten enthalten):

 SQLDataSet1.SetSchemaInfo(stSysTable, "", "");
 SQLDataSet1->SetSchemaInfo(stSysTable, "", "");

Wenn Sie die Datenmenge öffnen, nachdem dieser Aufruf von SetSchemaInfo ausgeführt wurde, enthält die resultierende Datenmenge für jede Tabelle einen Datensatz, dessen Spalten den Tabellennamen, den Typ, den Schemanamen usw. angeben. Falls der Server Metadaten nicht in Systemtabellen ablegt (wie beispielsweise MySQL), enthält die Datenmenge nach dem Öffnen keine Datensätze.

Das obige Beispiel hat nur den ersten Parameter verwendet. Angenommen, Sie wollen stattdessen eine Liste der Eingabeparameter für die Stored Procedure MyProc abrufen. Nehmen wir weiterhin an, die Person, die diese Stored Procedure geschrieben hat, hat alle Parameter unter Verwendung eines Präfix benannt, um damit anzuzeigen, ob es sich um Eingabe- oder Ausgabeparameter handelt ("inName", "outValue" usw.). Für dieses Szenario könnten Sie SetSchemaInfo wie folgt aufrufen:

 SQLDataSet1.SetSchemaInfo(stProcedureParams, "MyProc", "in%");
 SQLDataSet1->SetSchemaInfo(stProcedureParams, "MyProc", "in%");

Die resultierende Datenmenge ist eine Tabelle der Eingabeparameter mit Spalten, die die Eigenschaften jedes Parameters beschreiben.

Daten abrufen, nachdem die Datenmenge für Metadaten ausgewertet wurde

Nach dem Aufruf von SetSchemaInfo gibt es zwei Möglichkeiten, zur Ausführung von Abfragen oder Stored Procedures zu der Datenmenge zurückzukehren:

  • Ändern Sie die Eigenschaft CommandText, um die Abfrage, Tabelle oder Stored Procedure anzugeben, aus der Sie Daten abrufen wollen.
  • Rufen Sie SetSchemaInfo auf und setzen Sie den ersten Parameter auf stNoSchema. In diesem Fall geht die Datenmenge dazu über, die von dem aktuellen Wert von CommandText angegebenen Daten abzurufen.

Siehe auch