ResultSet#getBooleanは、nullの場合にfalseを返すようです。Boolean
からboolean
(ResultSet
ではない)を取得する簡単な方法はありますか?
GetBooleanを呼び出した後、wasNullを呼び出すことができます。ここで説明します: 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();
}
ResultSet.getObject()
を使用してから、Boolean
オブジェクトにキャストすることにより、目的の結果(つまり、列の値がnullの場合はnull)を取得する必要があります。
このような:
_Boolean someBool = (Boolean) rs.getObject("booleanColumnName");
_
列タイプがブール値(つまり、TINYINT(1)
)に対応している限り、これは安全だと思いますが、テストしてください。
この回答 同じことを行いますが、Integer
オブジェクトを使用します。
resultSet.getObject(1) == null ? null : resultSet.getBoolean(1)