Получение объекта Integer из ResultSet
A ResultSet
предоставляет метод getInt()
, который возвращает примитив int
. Возможно ли получить объект Integer
, который позволяет null
? Поле DB, которое я извлекаю, равно NULL, а getInt()
возвращает меня 0
всякий раз, когда поле null
.
Спасибо
Ответы
Ответ 1
Просто проверьте, нет ли поля null
или не используется ResultSet#getObject()
.
Integer foo = resultSet.getObject("foo") != null ? resultSet.getInt("foo") : null;
Или, если вы можете гарантировать, что используете правильный тип столбца DB, чтобы ResultSet#getObject()
действительно возвращал Integer
(и, следовательно, не Long
, Short
или Byte
), тогда вы также можете просто придумайте его.
Integer foo = (Integer) resultSet.getObject("foo");
Ответ 2
Вы можете проверить wasNull
после получения значения.
В документации :
Сообщает, имеет ли последний прочитанный столбец значение SQL NULL.
Обратите внимание, что сначала вы должны вызвать один из методов getter в столбце, чтобы попытаться прочитать его значение, а затем вызвать метод wasNull, чтобы узнать, было ли прочитанное значение SQL NULL.
Ответ 3
Существует более простой способ. Просто введите его. Если значение null, оно будет равно нулю. Если он действителен, он становится автообъектом.
(Integer) resultSet.getObject("foo")