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.

Los métodos de DatabaseMetaData proporcionan los tipos de información siguientes:
  • 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:

  1. Cree un objeto DatabaseMetaData invocando el método getMetaData en la conexión.
  2. Invoque métodos de acceso a datos ( DatabaseMetaData ) para obtener información sobre el origen de los datos.
  3. Si el método devuelve un error de tipo " ResultSet":
    1. En un bucle, coloque el cursor utilizando el método next y recupere datos de cada columna de la fila actual del objeto ResultSet utilizando métodos getXXX .
    2. Invoque el método close para cerrar el objeto ResultSet .

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.

Figura 1. Uso de métodos DatabaseMetaData para obtener información sobre una fuente de datos
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