微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我记得Postgres发牢骚,因为我没有使用正确的数据类型,这就是为什么我先问这里,然后我再次更改受此问题影响的所有行.

我不用这个数字算数,但我需要保存null.

你的建议是什么? String,BigInteger?

代码示例:

//...
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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐