Подтвердить что ты не робот

Получение объекта Integer из ResultSet

A ResultSet предоставляет метод getInt(), который возвращает примитив int. Возможно ли получить объект Integer, который позволяет null? Поле DB, которое я извлекаю, равно NULL, а getInt() возвращает меня 0 всякий раз, когда поле null.

Спасибо

4b9b3361

Ответ 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")