web-dev-qa-db-ja.com

ResultSetからブール値を取得する

ResultSet#getBooleanは、nullの場合にfalseを返すようです。
BooleanからbooleanResultSetではない)を取得する簡単な方法はありますか?

10
Priv

GetBooleanを呼び出した後、wasNullを呼び出すことができます。ここで説明します: https://docs.Oracle.com/javase/7/docs/api/Java/sql/ResultSet.html#wasNull%28%29

11
uoyilmaz

これは機能するはずです:

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

ResultSet.getObject()を使用してから、Booleanオブジェクトにキャストすることにより、目的の結果(つまり、列の値がnullの場合はnull)を取得する必要があります。

このような:

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

列タイプがブール値(つまり、TINYINT(1))に対応している限り、これは安全だと思いますが、テストしてください。

この回答 同じことを行いますが、Integerオブジェクトを使用します。

0
theyuv
resultSet.getObject(1) == null ? null : resultSet.getBoolean(1)
0
Alex78191