Retrieving Database Table Columns in Java Applications

Database Connection Setup

Establishing a connection to the database is the initial requirement for acessing table metadata. The JDBC API provides the necessary tools for this operation.

import java.sql.*;

public class DatabaseMetadataReader {
    private static final String DB_URL = "jdbc:mysql://localhost:3306/test";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "password";
    
    public Connection establishConnection() throws SQLException, ClassNotFoundException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        return DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);
    }
}

Retrieving Column Information

Once the data base connection is established, the next step involves querying the database schema to extract column details from a specific table.

public void fetchTableColumns(Connection connection, String tableName) 
        throws SQLException {
    Statement queryStatement = connection.createStatement();
    ResultSet columnData = queryStatement.executeQuery(
        "SHOW COLUMNS FROM " + tableName
    );
    
    processColumnResults(columnData);
    
    columnData.close();
    queryStatement.close();
}

Processing Metadata Results

The final phase involves iterating through the result set and extracting relevant column attributes such as name and data type.

private void processColumnResults(ResultSet results) throws SQLException {
    while (results.next()) {
        String columnName = results.getString("Field");
        String columnType = results.getString("Type");
        
        System.out.printf("Column: %s | Type: %s%n", columnName, columnType);
    }
}

// Usage example
public static void main(String[] args) {
    DatabaseMetadataReader reader = new DatabaseMetadataReader();
    try {
        Connection dbConnection = reader.establishConnection();
        reader.fetchTableColumns(dbConnection, "users");
        dbConnection.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Alternative approach using DatabaseMetaData:

public void getColumnDetailsUsingMetadata(Connection conn, String tableName) 
        throws SQLException {
    DatabaseMetaData metaData = conn.getMetaData();
    ResultSet columns = metaData.getColumns(null, null, tableName, null);
    
    while (columns.next()) {
        String name = columns.getString("COLUMN_NAME");
        String type = columns.getString("TYPE_NAME");
        String size = columns.getString("COLUMN_SIZE");
        
        System.out.printf("Name: %s | Type: %s | Size: %s%n", name, type, size);
    }
    columns.close();
}

Tags: java JDBC database metadata MySQL

Posted on Wed, 03 Jun 2026 16:14:32 +0000 by vidhu