是否可以检查ResultSet以查看它是否包含当前行的列标签。我认为它是由某种Map支持的,所以提供一个rs.contains(“label”)方法不会那么昂贵,但我在javadoc中找不到一个。
我正在测试标签存在的当前方式是:
BigDecimal bid;
try {
bid = rs.getBigDecimal("bid");
}
catch(final SQLException e) {
bid = null;
}
但这对我来说似乎不整洁,如果你想以这种方式测试多行,那将是不可读的。
答案 0 :(得分:4)
您可以使用可以从结果集中获取的元数据。使用rs.getMetaData()
,然后在元数据上使用getColumnName()
和getColumnLabel()
方法。
答案 1 :(得分:2)
您可以使用ResultSetMetaData(请参阅我的相关帖子here)。这是我希望你使用的。您所做的是从ResultSet中检索ResultSetMetaData,遍历它并查看ResultSetMetaData.getColumnName(int index)
是否返回您一直在寻找的列名。
或者,您可以使用ResultSet.findColumn()
在ResultSet中查找列。
答案 2 :(得分:0)
为什么呢?您的查询已经确定返回了哪些列。但ResultSetMetadata会告诉您存在哪些列。