从ResultSet获取布尔值

时间:2016-09-18 18:22:01

标签: java mysql sql resultset

ResultSet #getBoolean似乎在为null时返回false 有一种简单的方法可以从Boolean获得boolean(不是ResultSet)吗?

4 个答案:

答案 0 :(得分:8)

调用getBoolean后可以调用wasNull。这里解释了:https://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#wasNull%28%29

答案 1 :(得分:4)

这应该有效:

    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();
    }

答案 2 :(得分:1)

通过使用ResultSet.getObject(),然后强制转换为Boolean对象,您应该获得所需的结果(即:当列值为null时为null)。

赞:

Boolean someBool = (Boolean) rs.getObject("booleanColumnName");

只要您的列类型对应于布尔值(即TINYINT(1)),我认为这是安全的,但是请对其进行测试。

This answer执行相同的操作,但使用Integer对象。

答案 3 :(得分:0)

resultSet.getObject(1) == null ? null : resultSet.getBoolean(1)