Información de la base de datos

Otra pieza importante a la hora de trabajar con la conexión a la base de datos mediante el objeto Connection es la posibilidad de poder preguntar sobre las características de una base de datos; por ejemplo, puede ser interesante saber si la base de datos soporta cierto nivel de aislamiento en una transacción, como puede ser TRANSACTION_SERIALIZABLE, que muchos gestores no soportan. Para esto, hay otra de las interfaces que soporta JDBC, DatabaseMetaData, a la que es posible interrogar sobre las características de la base de datos con la que se está trabajando. Es posible obtener un objeto de tipo DatabaseMetaData mediante la llamada al método getMetaData() de la clase Connection.

DatabaseMetaData proporciona diversa información sobre una base de datos y cuenta con varios métodos, a través de los cuales es posible obtener gran cantidad de información acerca de una tabla. Por ejemplo, getColumns() devuelve las columnas de una tabla, getPrimaryKeys() devuelve la lista de columnas que forman la clave primaria, por poner un par de ejemplos. El método getTables() devuelve la lista de todas las tablas de la base de datos, mientras que getProcedures() devuelve la lista de procedimientos almacenados. Muchos de los métodos de DatabaseMetaData devuelven un objeto de tipo ResultSet que contiene la información deseada. El listado que se muestra a continuación muestra el código necesario para obtener todas las tablas de una base de datos.

//LISTAMOS TODAS LAS TABLAS
String nombreTablas = “%”;
//LISTAMOS SOLO TABLAS
String tipos[] = new String[1];
DatabaseMetaData dbmd = conexion.getMetaData();
ResultSet tablas = dbmd.getTables(null, null, nombreTablas, tipos);
boolean seguir = tablas.next();
while (seguir) {
//MOSTRAMOS SOLO EL NOMBRE DE LAS TABLAS, GUARDADO
//EN LA COLUMNA “TABLE_NAME”
System.out.println(tablas.findColumn(“TABLE_NAME”));
seguir = tablas.next();

}

Hay todo un grupo de métodos que permiten averiguar si ciertas características están soportadas por la base de datos; entre ellos creo que los más importantes son:

  • supportsGroupBy() que indica que si se soporta el uso de GROUP BY en un SELECT.
  • supportsOuterJoins(), indica si se pueden llevar a cabo outer-joins.
  • supportTransactions(), indica si cierto tipo de transacciones está soportado o no.

DatabaseMetaData proporciona muchos otros métodos que permiten averiguar cosas tales como el máximo número de columnas utilizable en un SELECT, etc. En general, casi cualquier pregunta sobre las capacidades de la base de datos se puede contestar invocando a los métodos del objeto DatabaseMetaData.

Anuncios

Un comentario sobre “Información de la base de datos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s