This example show how we can use the ResultSetMetadata
class to get the number of columns and column names of the selected table. The ResultSetMetaData
class can also be used to get the column type and its properties.
Using the ResultSetMetaData
class might help you to create an inquiry program where you don’t have all information about a table columns.
package org.kodejava.jdbc;
import java.sql.*;
import java.util.ArrayList;
public class MetadataColumnExample {
private static final String URL = "jdbc:mysql://localhost/kodejava";
private static final String USERNAME = "kodejava";
private static final String PASSWORD = "s3cr*t";
public static void main(String[] args) {
try (Connection connection =
DriverManager.getConnection(URL, USERNAME, PASSWORD)) {
// In the statement below we'll select all records from users
// table and then try to find all the columns it has.
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(
"SELECT * FROM book");
// The ResultSetMetaData is where all metadata related
// information for a result set is stored.
ResultSetMetaData metadata = resultSet.getMetaData();
int columnCount = metadata.getColumnCount();
// To get the column names we do a loop for a number of column
// count returned above. And please remember a JDBC operation
// is 1-indexed so every index begin from 1 not 0 as in array.
ArrayList<String> columns = new ArrayList<>();
for (int i = 1; i <= columnCount; i++) {
String columnName = metadata.getColumnName(i);
columns.add(columnName);
}
// Later we use the collected column names to get the value of
// the column itself.
while (resultSet.next()) {
for (String columnName : columns) {
String value = resultSet.getString(columnName);
System.out.println(columnName + " = " + value);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Some result generated by our above examples are:
id = 1
isbn = 978-1491910771
title = Head First Java: A Brain-Friendly Guide
published_year = 2022
price = 45.49
Maven Dependencies
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.1.0</version>
</dependency>
Latest posts by Wayan (see all)
- How do I create a table with multiple header in iText 8? - March 16, 2024
- How do I add Image to a Table in iText 8? - March 11, 2024
- How do I downgrade Android SDK emulator version? - February 12, 2024