Java では、列がプリミティブint型にキャストされている ResultSet から null 値をテストしようとしています。
int iVal;
ResultSet rs = magicallyAppearingStmt.executeQuery(query);
if (rs.next()) {
if (rs.getObject("ID_PARENT") != null && !rs.wasNull()) {
iVal = rs.getInt("ID_PARENT");
}
}
上記のコードから、これを行うより良い方法はありますか?2番目の方法だと思います。null() だったテストは冗長ですか?
教育してください、ありがとう
ベストアンサー1
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 のコメントとして編集済み。記述された OP コードはiVal
初期化されていないためコンパイルされません)