如何确定结果集中是否存在列名?
由于 包含从动态 SQL 返回的数据,是否有任何方法可以确定 是否包含特定的列名?ResultSet
ResultSet
例如,如果我运行但并不真正存在,它将抛出异常。rs.getString("Column_ABC")
"Column_ABC"
如何测试 是否可以从名为 ?ResultSet
"Column_ABC"
由于 包含从动态 SQL 返回的数据,是否有任何方法可以确定 是否包含特定的列名?ResultSet
ResultSet
例如,如果我运行但并不真正存在,它将抛出异常。rs.getString("Column_ABC")
"Column_ABC"
如何测试 是否可以从名为 ?ResultSet
"Column_ABC"
使用 ResultSetMetaData
类。
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;
}
我不明白的是为什么需要这个函数。正在执行的查询或存储过程应具有已知结果。查询的列应该是已知的。需要这样的函数可能表明某个地方存在设计问题。
private boolean isThere(ResultSet rs, String column){
try{
rs.findColumn(column);
return true;
} catch (SQLException sqlex){
logger.debug("column doesn't exist {}", column);
}
return false;
}