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.
- 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:
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.
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