Obtención de información acerca de una fuente de datos mediante métodos DatabaseMetaData
La interfaz DatabaseMetaData contiene métodos para recuperar información sobre una fuente de datos. Estos métodos son útiles cuando escribe aplicaciones genéricas que pueden acceder a diversas fuentes de datos.
Acerca de esta tarea
En las aplicaciones genéricas que pueden acceder a diversas fuentes de datos, debe comprobar si una fuente de datos puede manejar diversas operaciones de base de datos antes de ejecutarlas. Por ejemplo, es necesario determinar si el controlador en un origen de datos está en el nivel JDBC 4.0 antes de invocar los métodos JDBC 4.0 para este controlador.
- Características soportadas por la fuente de datos, tales como el nivel SQL de ANSI
- Información específica sobre el controlador JDBC, tal como el nivel del controlador
- Límites, tales como el número máximo de columnas que puede tener un índice
- Indicación de si la fuente de datos soporta sentencias de definición de datos (CREATE, ALTER, DROP, GRANT, REVOKE)
- Lista de objetos contenidos en la fuente de datos, tales como tablas, índices o procedimientos
- Indicación de si la fuente de datos soporta diversas funciones JDBC, tales como las actualizaciones por lotes o los conjuntos de resultados desplazables ResultSet
- Lista de funciones escalares soportadas por el controlador
Procedimiento
Para invocar métodos DatabaseMetaData, siga estos pasos básicos:
ejemplos
Ejemplo: el código de programa siguiente muestra cómo utilizar métodos DatabaseMetaData para determinar la versión del controlador, obtener una lista de los procedimientos almacenados existentes en la fuente de datos, y obtener una lista de funciones de fecha y hora compatibles con el controlador. Los números que aparecen a la derecha de algunas sentencias corresponden a los pasos descritos anteriormente.
Connection con;
DatabaseMetaData dbmtadta;
ResultSet rs;
int mtadtaint;
String procSchema;
String procName;
String dtfnList;
…
dbmtadta = con.getMetaData(); // Create the DatabaseMetaData object 1
mtadtaint = dbmtadta.getDriverVersion(); 2
// Check the driver version
System.out.println("Driver version: " + mtadtaint);
rs = dbmtadta.getProcedures(null, null, "%");
// Get information for all procedures
while (rs.next()) { // Position the cursor 3a
procSchema = rs.getString("PROCEDURE_SCHEM");
// Get procedure schema
procName = rs.getString("PROCEDURE_NAME");
// Get procedure name
System.out.println(procSchema + "." + procName);
// Print the qualified procedure name
}
dtfnList = dbmtadta.getTimeDateFunctions();
// Get list of supported datetime functions
System.out.println("Supported datetime functions:");
System.out.println(dtfnList); // Print the list of datetime functions
rs.close(); // Close the ResultSet 3b