Db2 11.1

Informationen zu einer Datenquelle mit Hilfe von DatabaseMetaData-Methoden

Die Schnittstelle DatabaseMetaData enthält Methoden, die Informationen zu einer Datenquelle abrufen. Diese Methoden sind nützlich, wenn Sie generische Anwendungen schreiben, die auf verschiedene Datenquellen zugreifen können.

Informationen zu diesem Vorgang

In generischen Anwendungen, die auf verschiedene Datenquellen zugreifen können, müssen Sie testen, ob eine Datenquelle verschiedene Datenbankoperationen verarbeiten kann, bevor Sie sie ausführen. Sie müssen z. B. feststellen, ob der Treiber in einer Datenquelle auf JDBC 3.0-Ebene vorhanden ist, bevor Sie JDBC 3.0-Methoden für diesen Treiber aufrufen.

DatabaseMetaData -Methoden stellen die folgenden Arten von Informationen bereit:
  • Funktionen, die von der Datenquelle unterstützt werden, z. B. die ANSI-SQL-Ebene
  • Spezifische Informationen zum JDBC-Treiber, z. B. die Treiberstufe
  • Begrenzungen, wie z. B. die maximale Anzahl Spalten, die ein Index haben kann
  • Gibt an, ob die Datenquelle Datendefinitionsanweisungen unterstützt (CREATE, ALTER, DROP, GRANT, REVOKE)
  • Listen von Objekten in der Datenquelle, wie z. B. Tabellen, Indizes oder Prozeduren
  • Gibt an, ob die Datenquelle verschiedene JDBC-Funktionen unterstützt, z. B. Stapelaktualisierungen oder scrollbare ResultSet -Funktionen.
  • Eine Liste der skalaren Funktionen, die der Treiber unterstützt

Vorgehensweise

Um DatabaseMetaData -Methoden aufrufen zu können, müssen Sie die folgenden grundlegenden Schritte ausführen:

  1. Erstellen Sie ein Objekt DatabaseMetaData , indem Sie die Methode getMetaData für die Verbindung aufrufen.
  2. Rufen Sie DatabaseMetaData -Methoden auf, um Informationen zu der Datenquelle abzurufen.
  3. Wenn die Methode ein ResultSet zurückgibt:
    1. Positionieren Sie den Cursor in einer Schleife mit der Methode next , und rufen Sie Daten aus jeder Spalte der aktuellen Zeile des Objekts ResultSet mit Hilfe von getXXX -Methoden ab.
    2. Rufen Sie die Methode close auf, um das Objekt ResultSet zu schließen.

Beispiele

Beispiel: Der folgende Code veranschaulicht die Verwendung von DatabaseMetaData -Methoden zum Bestimmen der Treiberversion, zum Abrufen einer Liste der gespeicherten Prozeduren, die in der Datenquelle verfügbar sind, und zum Abrufen einer Liste der vom Treiber unterstützten Datums-/Uhrzeitfunktionen. Die Zahlen rechts von den ausgewählten Anweisungen entsprechen den zuvor beschriebenen Schritten.

Abbildung 1. Verwenden von DatabaseMetaData-Methoden zum Abrufen von Informationen zu einer Datenquelle
Connection con;
DatabaseMetaData dbmtadta;
ResultSet rs;
int mtadtaint;
String procSchema;
String procName;
String dtfnList;
…
dbmtadta = con.getMetaData();     // DatabaseMetaData-Objekt erstellen   1 
mtadtaint = dbmtadta.getDriverVersion();                                 2 
                                  // Treiberversion überprüfen
System.out.println("Driver version: " + mtadtaint);
rs = dbmtadta.getProcedures(null, null, "%");
                                  // Informationen für alle Prozeduren abrufen
while (rs.next()) {               // Cursor positionieren                3a 
 procSchema = rs.getString("PROCEDURE_SCHEM");
                                  // Prozedurschema abrufen
 procName = rs.getString("PROCEDURE_NAME");
                                  // Prozedurnamen abrufen
 System.out.println(procSchema + "." + procName);
                                  // Qualifizierten Prozedurnamen drucken
}
dtfnList = dbmtadta.getTimeDateFunctions();
                                  // Liste der unterstützten Datum/Uhrzeit-Funktionen abrufen
System.out.println("Supported datetime functions:");
System.out.println(dtfnList);     // Liste der Datum/Uhrzeit-Funktionen drucken
rs.close();                       // Ergebnismenge schließen             3b