gpt4 book ai didi

java - 当列类型为 bigint 时,PostgreSQL resultSet.getLong() 导致 ArrayIndexOutOfBoundsException

转载 作者:搜寻专家 更新时间:2023-11-01 00:52:28 25 4
gpt4 key购买 nike

我在 PostgreSQL 9.1 中有一个 View ,其中有一列类型为 bigint。这种类型在 Java 中应该映射到 Long,但实际上映射到 BigInteger。所以

resultSet.getLong(columnPos)

导致 ArrayIndexOutOfBoundsException。

resultSet.getBigInteger(columnPos)

resultSet.get(columnPos)

都具有以下 toString 和解析工作正常。对此的正确处理是什么?我应该先获取 BigInteger,调用 toString 并解析 Long 吗?或者是否有更好的方法告诉 ResultSetScrollableResults 正确的 Java 列类型?

谢谢。

最佳答案

bigint 数据类型已正确映射到 BigInteger,因为它是这么说的:它是一个大整数,可能不适合 Long。

您可以使用 resultSet.get(columnPos) 然后检查返回对象的类。

我们为此编写了一个实用程序类,所以我们会做这样的事情:

public Long getLongFromResultSet( ResultSet rs, int columnPos ) {
Object value = rs.get( columnPos );

if( value instanceof Number) { //this should handle any numeric Java type like BigInteger, Long etc.
return ((Number)value).longValue(); //autoboxing here
}

... //handle non-Number cases
}

关于java - 当列类型为 bigint 时,PostgreSQL resultSet.getLong() 导致 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8148919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com