Java 在结果集中重复检索返回null

Java 在结果集中重复检索返回null,java,jdbc,Java,Jdbc,我对ResultSet.getString有一个问题,当我第一次调用它时,它返回值,但第二次返回null(这没有关闭ResultSet或sql连接) 当然,代码很容易修复,可以避免第二次调用rs.getString(),但我想了解的是,如果第一次调用没有从以下位置执行,为什么第二次调用返回null: 为了实现最大的可移植性,每行中的结果集列应该按从左到右的顺序读取,并且每列只应该读取一次 在后台,您正在消耗TCP流中的字节,因此不能两次检索同一列值也就不足为奇了。在许多驱动程序中,重复或无序检索

我对
ResultSet.getString
有一个问题,当我第一次调用它时,它返回值,但第二次返回null(这没有关闭ResultSet或sql连接)

当然,代码很容易修复,可以避免第二次调用
rs.getString()
,但我想了解的是,如果第一次调用没有从以下位置执行,为什么第二次调用返回null:

为了实现最大的可移植性,每行中的结果集列应该按从左到右的顺序读取,并且每列只应该读取一次


在后台,您正在消耗TCP流中的字节,因此不能两次检索同一列值也就不足为奇了。

在许多驱动程序中,重复或无序检索列值都可以。我使用的是microsoft sql server jdbc drive 1.2。2@MarkRotteveel毫无疑问但根据JDBC规范,他们没有义务这样做。
if (rs.getString(i) == null) {
    properties.setProperty(metaData.getColumnLabel(i), "");
} else {
    properties.setProperty(metaData.getColumnLabel(i), rs.getString(i));
}