在Java中,我try 从ResultSet测试null值,在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声明的默认值.在这种情况下,你的测试完全是多余的.

如果字段值为空,您真的想做一些不同的事情,我建议:

int iVal = 0;
ResultSet rs = magicallyAppearingStmt.executeQuery(query);
if (rs.next()) {
    iVal = rs.getInt("ID_PARENT");
    if (rs.wasNull()) {
        // handle NULL field value
    }
}

(以下编辑为@martin comments;编写的操作代码无法编译,因为iVal未初始化)

Java相关问答推荐

如何使用反射在Java中获取注释的属性?

如何消除 Java 流上的声纳问题“重构代码以便使用此流管道”

读取/过滤文本文件的最快方法是什么

如何更改已在数据库中注册的 id 列类型

不变泛型似乎无法正常工作

如何在控制台中输出多行字符图像

由于非私有方法未覆盖或实现超类型中的方法,因此无法使用“<>”

在 Spring Boot 应用程序的服务层中正确使用 Optionals

无法将 JDA 导入 Maven - IntelliJ IDEA

Springboot的@Controller和@RestController注解什么时候使用,底层概念是什么?

Java Collections API:缺少 List 和 Deque 的序列(有序集合)超级接口?

Java 流不打印出预期值

如何使用固定参数和可变参数制作流?

GraphStream - 找不到有效的显示

EntityManager.remove 和 EntityManager.persist 上的 JPA 重复条目错误

如何遵循鲍勃叔叔的规则(建议)在一种方法中正确使用一个 try-catch 块?

TreeSet 正在向 Set 添加重复值

为什么 RecyclerView 在其余 Kotlin Android 之前加载

用于双向 Hibernate 关联的 MapStruct 自定义列表映射

如何用填充零计算整数