As the ResultSet
contains the data returned from the dynamic SQL, if there are any method to determine if the ResultSet
contains a particular column name?
For example , if I run rs.getString("Column_ABC")
but "Column_ABC"
does not really exist, it will throw out the exception.
How can I test if the ResultSet
can get a data from a column named "Column_ABC"
?
Use the ResultSetMetaData
class.
public static boolean hasColumn(ResultSet rs, String columnName) throws SQLException {
ResultSetMetaData rsmd = rs.getMetaData();
int columns = rsmd.getColumnCount();
for (int x = 1; x <= columns; x++) {
if (columnName.equals(rsmd.getColumnName(x))) {
return true;
}
}
return false;
}
The thing I don't understand is why this function would ever be needed. The query or stored procedure being executed should have known results. The columns of the query should be known. Needing a function like this may be a sign that there is a design problem somewhere.