测试ResultSet以查看它是否包含列标签

时间:2010-11-10 09:21:56

标签: java jdbc resultset

是否可以检查ResultSet以查看它是否包含当前行的列标签。我认为它是由某种Map支持的,所以提供一个rs.contains(“label”)方法不会那么昂贵,但我在javadoc中找不到一个。

我正在测试标签存在的当前方式是:

BigDecimal bid;
    try {
        bid = rs.getBigDecimal("bid");
    }
    catch(final SQLException e) {
        bid = null;
    }

但这对我来说似乎不整洁,如果你想以这种方式测试多行,那将是不可读的。

3 个答案:

答案 0 :(得分:4)

您可以使用可以从结果集中获取的元数据。使用rs.getMetaData(),然后在元数据上使用getColumnName()getColumnLabel()方法。

答案 1 :(得分:2)

您可以使用ResultSetMetaData(请参阅我的相关帖子here)。这是我希望你使用的。您所做的是从ResultSet中检索ResultSetMetaData,遍历它并查看ResultSetMetaData.getColumnName(int index)是否返回您一直在寻找的列名。

或者,您可以使用ResultSet.findColumn()在ResultSet中查找列。

答案 2 :(得分:0)

为什么呢?您的查询已经确定返回了哪些列。但ResultSetMetadata会告诉您存在哪些列。