为什么OracleStatement.wasNullValue会抛出NullPointerException?

时间:2015-06-25 20:50:39

标签: oracle jdbc

我从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?这是从结果集中检索数据的正确方法吗?

1 个答案:

答案 0 :(得分:0)

Oracle JDBC瘦驱动程序中存在一个旧错误,如果在关闭的ResultSet上调用,则wasNull将抛出NPE。所以你可能想在调用wasNull()之前尝试调用rs.isClosed()。