При работе с набором результатов JDBC я хочу получить Double вместо double, так как этот столбец имеет значение NULL. Rs.getDouble возвращает 0.0, когда столбец имеет значение null.
Как получить Double из набора результатов вместо double?
Ответ 1
Вы можете проверить wasNull
на ResultSet, чтобы узнать, было ли это значение null
.
Обратите внимание, что сначала вы должны вызвать один из методов getter в столбце, чтобы попытаться прочитать его значение, а затем вызвать метод wasNull, чтобы узнать, было ли прочитанное значение SQL NULL.
Если вам действительно понадобится Double
, вы можете создать его из возвращаемого Double
.
Ответ 2
Альтернативой вышеупомянутому 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;
}
Ответ 3
Использовать ResultSet.wasNull → http://java.sun.com/javase/6/docs/api/java/sql/ResultSet.html#wasNull%28%29
В основном он работает для всех примитивных типов, сначала используйте getDouble
, getInt
и т.д., а затем только если результат равен 0, вы используете wasNull
.
Ответ 4
Вы можете просто сделать:
Двойной d = (Double) resultSet.getObject( "column" );
тогда вам не придется беспокоиться, если оно было нулевым.