Протестируйте ResultSet, чтобы увидеть, содержит ли он метку столбца.

Можно ли проверить ResultSet, чтобы увидеть, содержит ли он метку столбца для текущей строки. Я бы предположил, что он поддерживается какой-то картой, поэтому предоставление метода rs.contains("label") не может быть таким дорогим, но я не могу найти его в javadoc.

Текущий способ проверки наличия метки:

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

Но мне это кажется неаккуратным и будет нечитаемым, если вы хотите протестировать таким образом несколько строк.


person Richard    schedule 10.11.2010    source источник
comment
См. соответствующий пост: stackoverflow.com/questions/3942583/   -  person Buhake Sindi    schedule 10.11.2010


Ответы (3)


Вы можете использовать метаданные, которые вы можете получить из набора результатов. Используйте rs.getMetaData(), а затем в метаданных есть методы getColumnName() и getColumnLabel().

person Michał Niklas    schedule 10.11.2010

Вы можете использовать ResultSetMetaData (см. мой связанный пост >здесь). Это то, что я бы предпочел, чтобы вы использовали. Что вы делаете, так это извлекаете ResultSetMetaData из ResultSet, перебираете его и смотрите, возвращает ли ResultSetMetaData.getColumnName(int index) имя столбца, которое вы искали.

В качестве альтернативы вы можете использовать ResultSet.findColumn(), чтобы найти столбец в наборе результатов.

person Buhake Sindi    schedule 10.11.2010

Почему? Ваш запрос уже определит, какие столбцы будут возвращены. Но ResultSetMetadata сообщает вам, какие столбцы присутствуют.

person user207421    schedule 10.11.2010