gpt4 book ai didi

java - 如何在 Java 和 PostgreSQL 中处理 32 位数字?

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

我正在使用 JavaFX 和 PostgreSQL 数据库开发一个小工具。我现在的任务是处理一个 32 位数字。我用 Long 试了一下,但它太短/太小了。

我记得 Postgres 提示是因为我没有使用正确的数据类型,这就是为什么我要先在这里询问,然后再更改所有受此问题影响的行。

我不对这个数字进行数学运算,但我需要在其中保存 null。

你有什么建议?字符串,大整数?

代码示例:

//...
myObject.setSerialNumber(getLongFromDB(rs, "serialnumber"));
//...

private static Long getLongFromDB(ResultSet rs, String column) throws SQLException {
Long l = rs.getLong(column);
if (rs.wasNull()) l = null; // because getLong is long not Long, I need to know about null
return l;
}

最佳答案

对于 Oracle/PostgreSQL,与 NUMBER/NUMERIC 对应的类型是 Java 的 BigDecimal。这两种类型具有相同的内部表示(数字存储为十进制数字)。因此,您不会遇到任何舍入错误的问题,并且它们之间的转换应该更快。

很多 Java 开发人员使用 Int(s)/Long(s) 作为 ID 是因为他们被告知 int/long “快得多”,这是一个很大的误解。在 JEE 中,您实际上永远不会对从数据库返回的 NUMBER 执行任何数学计算。 BigDecimal 也比 Long 小一些。

关于java - 如何在 Java 和 PostgreSQL 中处理 32 位数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30319330/

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