解决java resultSet中数字以getString()读取时被截掉过长小数位的问题(oracle情况下)

41 篇文章 0 订阅

最近在运用JDBC的resultSet读取数据库数据时,发现一个奇怪的现象,就是如果在java中调用ResultSet的getString()方法获取小数位过长的数值型数据时,那么该数值型数据会被四舍五入,更有甚者,对于整形的数字,其读出数据为“xxx.”(即数字后面带一个小数点),虽然没查找到关于该情况发生的原因,但是初步估计是ResultSet在读出数据并将数字型数据强制转化为字符串型数据时,调用自己的格式化工具。

     对于这个问题,个人觉得最简单的方法就是将数据直接以对象的方式读出,即调用getObejct()方法,这样就不会存在数据被自动的强制转化,这里采用以下方法解决:

   

注意:如果是基于oralce数据库,并且读出的数据中包括rowid字段,那么需要做一个"instanceof ROWID"的判断,并且该类型数据只能以getString 读出比较合理。对于其他类型的数据,均可采用getObject方法读出。

这样的话,数字型数据均被存储为BigDecimal对象,所以包含多小数位的数字也不会被截断处理。

接下来就可以下自己随行所欲的按照自己的需要处理所需数据了。

 

附:如果数字型数据以getObejct方式读出后,类型均为BigDecimal

 

 

如果想在jxl中格式化数字型数据并写入到excel的话,可采用以下方式:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值