I have a ResultSet that returns data of different types. The query is constructed dynamically so, at compile time, I don't know what type of value the query will return.
I have written the following code assuming that all results are Strings. But I want to get the type of each value too. How can I do this?
Below is the code I have written.
while (reportTable_rst.next()) {
String column = reportTable_rst.getString(columnIterator);
}
At this point, I would like to get the column type, and get the value according to the data type.
The ResultSetMetaData.getColumnType(int column)
returns a int
value specifying the column type found in java.sql.Types
.
Example:
Connection connection = DriverManager.getConnection(JDBC_URL, JDBC_USERNAME, JDBC_PASSWORD);
PreparedStatement statement = connection.prepareStatement(JDBC_SELECT);
ResultSet rs = statement.executeQuery();
PrintStream out = System.out;
if (rs != null) {
while (rs.next()) {
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
if (i > 1) {
out.print(",");
}
int type = rsmd.getColumnType(i);
if (type == Types.VARCHAR || type == Types.CHAR) {
out.print(rs.getString(i));
} else {
out.print(rs.getLong(i));
}
}
out.println();
}
}