可以使用JDBC连接MySQL数据库,并使用ResultSetMetaData类来获取表结构信息。

示例代码如下:

import java.sql.*;

public class MySQLTableInfo {
    public static void main(String[] args) {
        try {
            // 加载MySQL驱动
            Class.forName("com.mysql.jdbc.Driver");

            // 连接MySQL数据库
            String url = "jdbc:mysql://localhost:3306/test";
            String user = "root";
            String password = "123456";
            Connection conn = DriverManager.getConnection(url, user, password);

            // 创建Statement对象
            Statement stmt = conn.createStatement();

            // 执行查询语句
            String sql = "SELECT * FROM table_name";
            ResultSet rs = stmt.executeQuery(sql);

            // 获取ResultSetMetaData对象
            ResultSetMetaData rsmd = rs.getMetaData();

            // 获取表名和注释
            String tableName = rsmd.getTableName(1);
            String tableComment = getTableComment(conn, tableName);

            // 输出表名和注释
            System.out.println("Table Name: " + tableName);
            System.out.println("Table Comment: " + tableComment);

            // 获取字段名、类型和注释
            int columnCount = rsmd.getColumnCount();
            for (int i = 1; i <= columnCount; i++) {
                String columnName = rsmd.getColumnName(i);
                String columnType = rsmd.getColumnTypeName(i);
                String columnComment = getColumnComment(conn, tableName, columnName);

                // 输出字段名、类型和注释
                System.out.println("Column Name: " + columnName);
                System.out.println("Column Type: " + columnType);
                System.out.println("Column Comment: " + columnComment);
            }

            // 关闭数据库连接
            rs.close();
            stmt.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 获取表注释
    public static String getTableComment(Connection conn, String tableName) throws SQLException {
        String tableComment = null;
        String sql = "SELECT TABLE_COMMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA=? AND TABLE_NAME=?";
        PreparedStatement pstmt = conn.prepareStatement(sql);
        pstmt.setString(1, conn.getCatalog());
        pstmt.setString(2, tableName);
        ResultSet rs = pstmt.executeQuery();
        if (rs.next()) {
            tableComment = rs.getString("TABLE_COMMENT");
        }
        rs.close();
        pstmt.close();
        return tableComment;
    }

    // 获取字段注释
    public static String getColumnComment(Connection conn, String tableName, String columnName) throws SQLException {
        String columnComment = null;
        String sql = "SELECT COLUMN_COMMENT FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=? AND TABLE_NAME=? AND COLUMN_NAME=?";
        PreparedStatement pstmt = conn.prepareStatement(sql);
        pstmt.setString(1, conn.getCatalog());
        pstmt.setString(2, tableName);
        pstmt.setString(3, columnName);
        ResultSet rs = pstmt.executeQuery();
        if (rs.next()) {
            columnComment = rs.getString("COLUMN_COMMENT");
        }
        rs.close();
        pstmt.close();
        return columnComment;
    }
}

注意需要替换代码中的表名、数据库连接信息等。

运行该程序可以输出如下结果:

Table Name: table_name
Table Comment: 表注释
Column Name: id
Column Type: INT
Column Comment: ID
Column Name: name
Column Type: VARCHAR
Column Comment: 名称
Column Name: age
Column Type: INT
Column Comment: 年龄

其中,getTableComment和getColumnComment方法分别用于获取表和字段的注释,需要使用information_schema数据库中的表查询


原文地址: http://www.cveoy.top/t/topic/eZr6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录