检查 Java 结果集中的空 int 值

2022-08-31 05:02:09

在Java中,我试图从ResultSet测试空值,其中列被强制转换为基元int类型。

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

从上面的代码片段来看,有没有更好的方法来做到这一点,我假设第二个wasNull()测试是多余的?

教育我们,并感谢


答案 1

当字段值为 返回 时,默认值为 返回 ,这也是声明的默认值。在这种情况下,您的测试是完全冗余的。ResultSet.getIntNULL0iVal

如果您真的想在字段值为 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


答案 2

另一种解决方案:

public class DaoTools {
    static public Integer getInteger(ResultSet rs, String strColName) throws SQLException {
        int nValue = rs.getInt(strColName);
        return rs.wasNull() ? null : nValue;
    }
}