在此示例中,我们使用DatabaseMetaData检索表的列名。可以通过调用来获取元数据信息connection.getMetaData()。接下来,我们可以ResultSet通过调用获取对象metadata.getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern)。
从这个结果集COLUMN_NAME,TYPE_NAME,COLUMN_SIZE和其他信息可以被读取。
package org.nhooo.example.jdbc; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; public class DbMetadataExample { private static final String URL = "jdbc:mysql://localhost/nhooo"; private static final String USERNAME = "root"; private static final String PASSWORD = ""; public static void main(String[] args) { try (Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD)) { DatabaseMetaData metadata = connection.getMetaData(); ResultSet resultSet = metadata.getColumns(null, null, "books", null); while (resultSet.next()) { String name = resultSet.getString("COLUMN_NAME"); String type = resultSet.getString("TYPE_NAME"); int size = resultSet.getInt("COLUMN_SIZE"); System.out.println("Column name: [" + name + "]; " + "type: [" + type + "]; size: [" + size + "]"); } } catch (SQLException e) { e.printStackTrace(); } } }
下books表描述了位信息:
Column name: [isbn]; type: [VARCHAR]; size: [50] Column name: [title]; type: [VARCHAR]; size: [100] Column name: [published_year]; type: [INT]; size: [10] Column name: [price]; type: [DECIMAL]; size: [10]
Maven依赖
<!-- https://search.maven.org/remotecontent?filepath=mysql/mysql-connector-java/8.0.17/mysql-connector-java-8.0.17.jar --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.17</version> </dependency>