我正在使用JavaFX和PostgreSQL数据库开发一个小工具.我现在的任务是处理32位数字.我用Long试了一下,但是它很短/小.我记得Postgres发牢骚,因为我没有使用正确的数据类型,这就是为什么我先问这里,然后我再次更改受此问...
我正在使用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.
本文标题为:如何在Java和PostgreSQL中处理32位数字?
基础教程推荐
- Spring Cloud 中自定义外部化扩展机制原理及实战记录 2022-11-07
- Spring Boot自定义 Starter并推送到远端公服的详细代码 2023-05-13
- SpringCloud Tencent 全套解决方案源码分析 2023-02-10
- SpringBoot bean依赖属性配置详细介绍 2023-06-01
- Jsp+Servlet实现文件上传下载 文件上传(一) 2023-07-30
- Java MyBatis框架环境搭建详解 2023-04-11
- Spring深入分析讲解BeanUtils的实现 2023-01-23
- MyBatis流式查询的使用详解 2023-04-16
- 使用JSON.toJSONString格式化成json字符串时保留null属性 2023-01-13
- 关于controller的异常处理及service层的事务控制方式 2022-11-08
