为什么 OracleStatement.wasNullValue 抛出 NullPointerException?

Why does OracleStatement.wasNullValue throw NullPointerException?

我从 Oracle 数据库执行了一个简单的查询,我在我的日志中看到了这个错误:

java.lang.NullPointerException
        at oracle.jdbc.driver.OracleStatement.wasNullValue(OracleStatement.java:3337)
        at oracle.jdbc.driver.OracleResultSetImpl.wasNull(OracleResultSetImpl.java:122)

这是导致该错误的代码:

public static Long getLong(ResultSet rs, String columnName) throws SQLException{
        long val = rs.getLong(columnName);
        return rs.wasNull() ? null : val;
    }

为什么 wasNullValue 抛出 NullPointerException?这是从结果集中检索数据的正确方法吗?

Oracle JDBC 瘦驱动程序中存在一个旧错误,如果在关闭的结果集上调用 wasNull 会抛出 NPE。所以你可能想在调用 wasNull().

之前尝试调用 rs.isClosed()