首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

MySQL的sum函数返回的门类

2013-12-09 
MySQL的sum函数返回的类型今天项目切换数据库时,出错访问数据库的代码大概是这样: 表字段“number”的类型是

MySQL的sum函数返回的类型
今天项目切换数据库时,出错

访问数据库的代码大概是这样:



表字段“number”的类型是int(10) unsigned
       
连接数据库DataBaseA,测试运行正常;切换到另一数据库DataBaseB(数据库表,表名,表结构一样)时,发现报错:
java.lang.NumberFormatException: For input string: "10.0"

把sql语句拷贝到MySQL命令行窗口里面直接执行,sum(number)返回的值是10;
但在Spring的getJdbcTemplate().queryForList(sql)返回,则变成了10.0,
打印row.get("sumNumberOfOneDay").getClass()的结果是:class java.lang.Double

切回DataBaseA,打印结果是java.math.BigDecimal

两个数据库的查询结果在MySQL命令行窗口返回整数,但在Java程序中返回浮点数

那不用Spring,直接操作JDBC:

DataBaseA打印的结果:
sumNumberOfOneDay, DECIMAL

DataBaseB打印的结果:
sumNumberOfOneDay, DOUBLE

基本可判断是MySQL的问题

网上搜索一下,果然:
val = getString(columnIndex);if ((val != null) && (val.length() != 0)) {            if ((val.indexOf("e") == -1) && (val.indexOf("E") == -1)                    && (val.indexOf(".") == -1)) {                return Integer.parseInt(val);            } else {                // Convert floating point                return (int) (Double.parseDouble(val));            }        } else {            return 0;        }


    

热点排行