JDBC 获取 mysql 表注释

错误的获取方法

网上绝大部分文章都是使用以下方法获取 mysql 的表注释

Connection conn = DriverManager.getConnection(url, user, password);
DatabaseMetaData dbMetaData = conn.getMetaData();
ResultSet rs = dbMetaData.getTables("数据库名", null, "表名", null);
while (rs.next()) {
    String tableRemark = rs.getString("REMARKS");
}
复制代码

实测根本获取不到,刚开始以为是mysql-jdbc驱动的版本导致了,实际测试之后发现,跟mysql-jdbc驱动的版本没关系

获取不到的原因

下载了 Mysql 的驱动源程序进行了代码的查询,发现他在获取表元数据的时候已经将表注释长度设置成 0 了

image.png

也就是说,所有通过调用 DatabaseMetaData 类的 getTables()方法获取到的 ResultSet 对象中都没有表注释信息

正确的获取方法

那么该怎么通过 JDBC 获取到 mysql 表的注释呢?

可以通过下面的的方法

String tableSchema = "数据库名";
String table = "表名";
String sql = "SELECT TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '"+tableSchema+"' AND TABLE_NAME = '"+table+"'";
Connection conn = DriverManager.getConnection(url, user, password);
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery(sql);
while (rs.next()) {
    String tableRemark = rs.getString(1);
}
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享