Extracting Database Metadata using DatabaseMetaData

DatabaseMetaData is a JDBC interface used to obtain information about the database, JDBC driver, tables, columns, and supported database features. It is obtained from a Connection object using the getMetaData() method. Using DatabaseMetaData, a Java program can dynamically inspect database information without directly querying system tables. This is useful for database administration, debugging, database migration tools, and applications that need to work with different databases.

Program: Extracting Database Metadata

This program extracts basic information about the connected MySQL database using DatabaseMetaData. It displays the database product name, database version, JDBC driver information, connected username, database URL, and whether the database supports transactions and batch updates.

import java.sql.*;

public class DatabaseMetaDataExample {

    public static void main(String[] args) {

        String url =
            "jdbc:mysql://localhost:3306/jdbc_demo";

        String username = "root";
        String password = "password";

        try {
            // Establish connection
            Connection con =
                DriverManager.getConnection(
                    url, username, password);

            // Get DatabaseMetaData object
            DatabaseMetaData dbmd =
                con.getMetaData();

            System.out.println(
                "===== Database Metadata =====");

            System.out.println(
                "Database Name: " +
                dbmd.getDatabaseProductName());

            System.out.println(
                "Database Version: " +
                dbmd.getDatabaseProductVersion());

            System.out.println(
                "JDBC Driver Name: " +
                dbmd.getDriverName());

            System.out.println(
                "JDBC Driver Version: " +
                dbmd.getDriverVersion());

            System.out.println(
                "Username: " +
                dbmd.getUserName());

            System.out.println(
                "Database URL: " +
                dbmd.getURL());

            System.out.println(
                "Supports Transactions: " +
                dbmd.supportsTransactions());

            System.out.println(
                "Supports Batch Updates: " +
                dbmd.supportsBatchUpdates());

            System.out.println(
                "Supports Stored Procedures: " +
                dbmd.supportsStoredProcedures());

            // Close connection
            con.close();

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
Execution and Output:

PS D:\test> javac -classpath ".;D:\test\mysql-connector.jar" DatabaseMetaDataExample.java
PS D:\test> java -classpath ".;D:\test\mysql-connector.jar" DatabaseMetaDataExample
===== Database Metadata =====
Database Name: MySQL
Database Version: 8.0.38
JDBC Driver Name: MySQL Connector/J
JDBC Driver Version: mysql-connector-j-9.3.0 (Revision: 20ef8ee9eb4294a03858acccea0ddad3525f1ff9)
Username: root@localhost
Database URL: jdbc:mysql://localhost:3306/jdbc_demo
Supports Transactions: true
Supports Batch Updates: true
Supports Stored Procedures: trueCode language: JavaScript (javascript)
Scroll to Top