ResultSet # getBoolean возвращает false, когда он равен нулю.
Есть ли простой способ получить Boolean
(не boolean
) от ResultSet
?Получение Boolean из ResultSet
ответ
Вы можете позвонить wasNull после вызова getBoolean. Это объясняется здесь: https://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#wasNull%28%29
Это должно работать:
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test?serverTimezone=UTC");){
// create table bool_table (bool_value boolean);
// insert into bool_table values (null);
String sql = "SELECT * FROM bool_table";
try (PreparedStatement preStmt = conn.prepareStatement(sql)){
try (ResultSet rs = preStmt.executeQuery()) {
rs.next();
System.out.println(rs.getObject(1, Boolean.class));
}
} catch (SQLException e) {
e.printStackTrace();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
Он бросает java.lang.AbstractMethodError –
@NadavB, это не должно быть так, по крайней мере для MySQL. Я добавил полный пример. –
это случилось со мной после postgresql. Второй ответ с wasNull работал для меня отлично. Может быть, ваш ответ будет только для mySQL? –
Так что я должен был бы использовать: 'Boolean Foo = result.getBoolean ("бар"); if (result.wasNull()) foo = null; '? – Priv
Да, вы можете использовать его так. – uoyilmaz
Спасибо, отличная помощь – leole