本示例说明如何使用ResultSetMetadata该类来获取所选表的列数和列名。该ResultSetMetaData班还可以用于获取列类型及其属性。
使用此类可以帮助您创建一个查询程序,在该程序中您不具有有关表列的所有信息。
package org.nhooo.example.jdbc; import java.sql.*; import java.util.ArrayList; public class MetadataColumnExample { 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) throws Exception { try (Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD)) { // 在下面的语句中,我们将从用户中选择所有记录 // 表,然后尝试查找它具有的所有列。 Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery( "SELECT * FROM books"); // ResultSetMetaData是所有元数据相关的地方 // 存储结果集的信息。 ResultSetMetaData metadata = resultSet.getMetaData(); int columnCount = metadata.getColumnCount(); // 为了获得列名,我们对多个列进行循环 //计数返回上面。并且请记住JDBC操作 // 是1索引的,因此每个索引都从1开始而不是数组中的0。 ArrayList<String> columns = new ArrayList<>(); for (int i = 1; i < columnCount; i++) { String columnName = metadata.getColumnName(i); columns.add(columnName); } // 稍后,我们使用收集的列名称来获取的值 // 它自己的列。 while (resultSet.next()) { for (String columnName : columns) { String value = resultSet.getString(columnName); System.out.println(columnName + " = " + value); } } } catch (SQLException e) { e.printStackTrace(); } } }
我们上面的示例生成的一些结果是:
isbn = 9781617291999 title = Java 8 in Action published_year = 2015
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>