1. ホーム

[解決済み】Java ResultSetからNull int値をチェックする方法

2022-03-29 17:25:33

質問

Java で、ResultSet のカラムがプリミティブにキャストされている場合に、NULL 値をテストしようとしています。 int 型になります。

int iVal;
ResultSet rs = magicallyAppearingStmt.executeQuery(query);
if (rs.next()) {
  if (rs.getObject("ID_PARENT") != null && !rs.wasNull()) {
    iVal = rs.getInt("ID_PARENT");
  }
}

上記のコードフラグメントから、より良い方法はないかと思い、2番目の wasNull() のテストは冗長ですか?

教育してください、そしてありがとう

解決方法は?

のデフォルトは ResultSet.getInt フィールドの値が NULL を返すことです。 0 のデフォルト値でもあります。 iVal という宣言があります。その場合、このテストは完全に冗長になります。

もし、実際にフィールドの値がNULLの場合に異なることをしたいのであれば、私は提案します。

int iVal = 0;
ResultSet rs = magicallyAppearingStmt.executeQuery(query);
if (rs.next()) {
    iVal = rs.getInt("ID_PARENT");
    if (rs.wasNull()) {
        // handle NULL field value
    }
}

(以下の @martin のコメントに従って編集されたものです。 iVal が初期化されていない)