在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()测试是多余的?
教育我们,谢谢
默认ResultSet.getInt时,字段值NULL是返回0,这也是您的默认值iVal声明。在这种情况下,您的测试是完全多余的。
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未初始化而无法编译)