Как мне получить Double из результирующего набора вместо double? - PullRequest
22 голосов
/ 29 января 2010

При работе с набором результатов JDBC я хочу получить Double вместо double, так как этот столбец обнуляем. Rs.getDouble возвращает 0.0, когда столбец нулевой.

Ответы [ 4 ]

26 голосов
/ 29 января 2010

Вы можете проверить wasNull в ResultSet, чтобы узнать, было ли значение null.

Обратите внимание, что сначала вы должны вызвать один из методов получения в столбце, чтобы попытаться прочитать его значение, а затем вызвать метод wasNull, чтобы проверить, было ли прочитанное значение SQL NULL.

Если вам действительно нужен Double после этого, вы можете создать его из double возвращенного.

14 голосов
/ 29 января 2010

Альтернативой вышеупомянутому ResultSet#wasNull() является проверка ResultSet#getObject() на null, чтобы можно было удобно поместить его в одну строку в сочетании с троичным оператором:

Double d = resultSet.getObject("column") != null ? resultSet.getDouble("column") : null;

вместо

Double d = resultSet.getDouble("column");
if (resultSet.wasNull()) {
    d = null;
}
6 голосов
/ 29 января 2010

Использовать ResultSet.wasNull -> http://java.sun.com/javase/6/docs/api/java/sql/ResultSet.html#wasNull%28%29

В основном это работает для всех примитивных типов, сначала вы используете getDouble, getInt и т. Д., А затем, только если результат равен 0, вы используете wasNull.

3 голосов
/ 11 мая 2010

Вы могли бы просто сделать:

Double d = (Double) resultSet.getObject ("column");

тогда вам не нужно беспокоиться, если он был нулевым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...