在 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()测试是多余的?
教育我们,谢谢
当字段值为NULL
时ResultSet.getInt
的默认值是返回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
未初始化)
我是一名优秀的程序员,十分优秀!