获取MySQL数据库的表名表注释字段名字段类型和数据类型的值字段注释使用Java语言
可以使用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 著作权归作者所有。请勿转载和采集!