Obtener los metadatos de un ResultSet

Las definiciones de tablas, vistas, índices, permisos, procedimientos almacenados, etc. son metadatos que también reciben el nombre de esquema o estructura de la base de datos.

Con el API JDBC podemos acceder y manipular los metadatos de la BD así como los datos que almacena. Un empleo muy común es la consulta de las definiciones de las columnas de una tabla.

El método getMetaData() de un objeto ResultSet devuelve una referencia a un objeto de tipo ResultSetMetaData() que encapsula los metadatos del ResultSet. El interfaz ResultSetMetaData declara métodos que nos van a permitir obtener elementos de los metadatos.

El método getColumnCount() devuelve el número de columas del resultado como un valor int. Al llamar a los métodos getColumnName() y getColumnType() para cada columna se obtienen los nombres y tipos de cada una. En ambos casos se debe especificar la columna mediante un índice. El nombre de la columna se obtiene como un objeto de tipo String y el tipo de columna como un valor int correspondiente al tipo SQL de la columna. La clase Types de java.sql define los campos públicos de tipo int de los distintos tipos SQL, que además tienen los mismos nombres que en SQL (CHAR, DOUBLE, VARCHAR, INT, TIME, etc.). El siguiente fragmento de código lista los nombres de las columnas de un resultset que sean de tipo DATE:

ResultSetMetaData metadatos = Empleados.getMetaData();

int columnas=metadatos.getColumnCount();

for (int i=1; i<=columnas; i++)

{

if (metadatos.getColumnType(i)==Types.DATE)

System.out.println(metadatos.getColumnName(i));

}

Donde Empleados es el resultset del cual queremos obtener los metadatos.

También podemos mostrar el valor de los datos contenidos en cada fila de un objeto ResultSet que en nuestro caso, sean del tipo DATE:

ResultSetMetaData metadatos = Empleados.getMetaData();

int columnas=metadatos.getColumnCount();

int fila=0;

while (Empleados.next()){

System.out.print(«\nFila » + (++fila) + «:»);

for (int i=1; i<=columnas; i++)

{

if (metadatos.getColumnType(i)==Types.DATE)

System.out.print(» » + Empleados.getDate(i));

}

}

También podemos obtener el nombre del tipo de una columna con el método getColumnTypeName() que requiere como argumento el número de columna. Otro método muy útil es getColumnDisplaySize() que devuelve el número máximo de caracteres que necesitaré para mostrar los datos de la columna cuyo índice pasemos como argumento.

* Transcripción del libro «Fundamentos de bases de datos con Java» publicado por Wrox/Anaya

Deja una respuesta