Java如何使用ResultSetMetaData获取表的列名?
本示例说明如何使用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>