概述
最近在运用JDBC的resultSet读取数据库数据时,发现一个奇怪的现象,就是如果在java中调用ResultSet的getString()方法获取小数位过长的数值型数据时,那么该数值型数据会被四舍五入,更有甚者,对于整形的数字,其读出数据为“xxx.”(即数字后面带一个小数点),虽然没查找到关于该情况发生的原因,但是初步估计是ResultSet在读出数据并将数字型数据强制转化为字符串型数据时,调用自己的格式化工具。
对于这个问题,个人觉得最简单的方法就是将数据直接以对象的方式读出,即调用getObejct()方法,这样就不会存在数据被自动的强制转化,这里采用以下方法解决:
注意:如果是基于oralce数据库,并且读出的数据中包括rowid字段,那么需要做一个"instanceof ROWID"的判断,并且该类型数据只能以getString 读出比较合理。对于其他类型的数据,均可采用getObject方法读出。
这样的话,数字型数据均被存储为BigDecimal对象,所以包含多小数位的数字也不会被截断处理。
接下来就可以下自己随行所欲的按照自己的需要处理所需数据了。
附:如果数字型数据以getObejct方式读出后,类型均为BigDecimal
如果想在jxl中格式化数字型数据并写入到excel的话,可采用以下方式:
最后
以上就是孝顺大地为你收集整理的解决java resultSet中数字以getString()读取时被截掉过长小数位的问题(oracle情况下)的全部内容,希望文章能够帮你解决解决java resultSet中数字以getString()读取时被截掉过长小数位的问题(oracle情况下)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复