La clase de java DatabaseMetaData nos permite obtener información exhaustiva sobre una base de datos, para ser más exactos de un Database Management System (DBMS), es decir , de un Sistema de administración de bases de datos.
Metadatos: Datos que describen los datos que se almacenan en una fuente de datos 🙂
En este post veremos un ejemplo sencillo de cómo usar DatabaseMetaData para obtener información relevante de nuestra base de datos de prueba «TutorialJava». No se entrara a detallar toda posible información que se pueda obtener a través de esta clase ya que es bastante.
Nuestro objetivo es conocer, los datos de nuestra DBMS, versión, usuario y drivers. Cantidad y nombre de las tablas (vistas incluidas), detallar las columnas de una tabla, de la tabla «alumnos» para ser precisos, listar los procedimientos y funciones almacenados.
Para la extracción de los metadatos se usan una serie de parámetros los cuales se describe a continuación:
Nuestra base de datos «TutorialJava» tiene la siguiente estructura:
El código java para extracción de metadatos es el siguiente:
import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; /** * @see https://www.jc-mouse.net/ * @author mouse */ public class Main { public static void main(String[] args) { String catalog = null; String schemaPattern = null; String tableNamePattern = null; String[] types = null; String columnNamePattern = null; String procedureNamePattern = null; String functionNamePattern = null; try (Connection connection = DriverManager.getConnection("jdbc:mariadb://localhost:3306/TutorialJava", "root", "")) { System.out.println("Conectado a la base de datos"); catalog = connection.getCatalog(); schemaPattern = connection.getSchema(); //Se obtienen metadatos DatabaseMetaData databaseMetaData = connection.getMetaData(); //Datos generales System.out.println("\nDATOS GENERALES\n---------------"); System.out.println("Producto: " + databaseMetaData.getDatabaseProductName()); System.out.println("Version: " + databaseMetaData.getDatabaseProductVersion()); System.out.println("Usuario: " + databaseMetaData.getUserName()); System.out.println("Driver: " + databaseMetaData.getDriverName()); System.out.println("Version: " + databaseMetaData.getDriverVersion()); //Tablas System.out.println("\nTABLAS\n---------------"); tableNamePattern = "%"; ResultSet rs = databaseMetaData.getTables(catalog, schemaPattern, tableNamePattern, types); while (rs.next()) { System.out.println("Tabla: '" + rs.getString("TABLE_NAME") + "'"); } //columnas de una tabla System.out.println("\nCOLUMNAS DE TABLA 'Alumno'\n---------------"); tableNamePattern = "alumno"; rs = databaseMetaData.getColumns(catalog, schemaPattern, tableNamePattern, columnNamePattern); while (rs.next()) { System.out.println("Columna: '" + rs.getString("COLUMN_NAME") + "' de tipo: " + rs.getString("TYPE_NAME")); } //Procedimientos almacenados System.out.println("\nPROCEDIMIENTOS ALMACENADOS\n---------------"); procedureNamePattern = "%"; rs = databaseMetaData.getProcedures(catalog, schemaPattern, procedureNamePattern); while (rs.next()) { System.out.println("Procedimiento: '" + rs.getString("PROCEDURE_NAME") + "' de tipo: " + rs.getString("PROCEDURE_TYPE")); } //donde TYPE_NAME: //0: Desconocido //1: Procedimiento //2: Funcion //Funciones System.out.println("\nFUNCIONES\n---------------"); functionNamePattern = "%"; rs = databaseMetaData.getFunctions(catalog, schemaPattern, functionNamePattern); while (rs.next()) { System.out.println("Funcion: '" + rs.getString("FUNCTION_NAME") + "' de tipo: " + rs.getString("FUNCTION_TYPE")); } //donde FUNCTION_TYPE //0: No se puede determinar si se devolverá un valor devuelto o una tabla //1: funcion no retorna tabla //2: funcion retorna tabla connection.close(); System.out.println("\nDesconectado a la base de datos"); } catch (SQLException ex) { System.err.println(ex.getMessage()); } } }
Ejecutando obtenemos:
Esperamos que este post le haya dado una idea básica sobre cómo puede acceder a los metadatos de su fuente de datos.
enjoy!
Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.
Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye
Enjoy! :)
Vue.js es un framework progresivo para la creación de interfaces de usuario de una sola página creado por Evan You. Pero...
Hace tiempo me pidieron el código fuente de un juego de Puzzle de Neon Genesis Evangelión, este juego es completo, tiene...
HTML5 junto a javascript permite dibujar figuras llamadas shapes sobre un lienzo que recibe el nombre de «canvas» su uso...
Para ponerse a tono con el ambiente mundialista de Brasil 2014, en este post construiremos un swing java al que llamarem...
En este post veremos como crear una aplicación de ayuda al usuario similar al extinto javahelp. Pero en esta oportunidad...
Un JTable es un componente swing de java que nos permite presentar datos en forma tabular, si bien haciendo uso de IDe...
Los comentarios estan cerrados
El gigante tecnologico Google a puesto un bonito Doodle en su buscador que esta fascinando a sus millones de usuarios qu...
WhatsApp anuncio a través de su blog que ya se encuentra disponible la función de envío de fotos y videos TEMPORALES, es...
Muchas de las innovaciones computacionales de la NASA se desarrollaron para ayudar a explorar el espacio, pero ahora la...
TikTok es una plataforma de microvideos muy popular entre los jóvenes el cual cuenta ya con millones de videos cortps de...
Lo he probado con SQLITE y salvo tema funciones, perfecto.
Gracias.
jmnieto