一尘不染

从Java ResultSet检查null int值

java

在Java中,我试图从ResultSet中测试是否为空值,在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()测试是多余的?

教育我们,谢谢


阅读 339

收藏
2020-09-08

共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未初始化而无法编译)

2020-09-08