所需jar包(Maven直接依赖即可)
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
下面是代码:
url, userName, passWord 换成自己的数据库的信息即可
public static void main(String[] args) throws Exception {
// 加载驱动到JVM
Class.forName("com.mysql.jdbc.Driver");
// 获取连接
Connection connection = DriverManager.getConnection(url, userName, passWord);
// 数据库的所有数据
DatabaseMetaData metaData = connection.getMetaData();
// 获取表的主键名字
ResultSet pkInfo = metaData.getPrimaryKeys(null, "%", "STUDENTS");
System.out.println(pkInfo == null);
while (pkInfo.next()){
System.out.print("数据库名称:"+pkInfo.getString("TABLE_CAT")+" ");
System.out.print("表名称:"+pkInfo.getString("TABLE_NAME")+" ");
System.out.print("主键列的名称:"+pkInfo.getString("COLUMN_NAME")+" ");
System.out.print("类型:"+pkInfo.getString("PK_NAME")+" ");
System.out.println("");
}
System.out.println("------------------------------分隔符--------------------------------------------");
// 获取表的相对应的列的名字
ResultSet tableInfo = metaData.getColumns(null,"%", "STUDENTS", "%");
while (tableInfo.next()){
// 表的名字
System.out.print("表名:"+tableInfo.getString("TABLE_NAME")+" ");
// 列的名称
System.out.print("列名:"+tableInfo.getString("COLUMN_NAME")+" ");
// 默认值
System.out.print("默认值 :"+tableInfo.getString("COLUMN_DEF")+" ");
// 字段的类型
System.out.print("字段的类型:"+tableInfo.getString("TYPE_NAME")+" ");
// 是否可以为空
System.out.print("是否可以为空:"+tableInfo.getString("IS_NULLABLE")+" ");
// 是否为自增
System.out.print("是否为自增:"+tableInfo.getString("IS_AUTOINCREMENT")+" ");
// 字段说明
System.out.print("字段说明:"+tableInfo.getString("REMARKS")+" ");
// 长度(有时候是错的)
System.out.print("长度:"+tableInfo.getString("COLUMN_SIZE")+" ");
System.out.println();
}
}
当获取字段长度的时候有时候不准确:
以下为输出的:
而数据库的长度: