求解使用dbutils 组件查询,查询语句中会进行百分比计算,结果异常

glonely 发布于 2011/10/19 11:01
阅读 558
收藏 1

求解使用dbutils 组件查询,查询语句中会进行百分比计算,结果异常

select concat(round(85/100*100,2),'%%') as result from table

查询出来的结果是乱的, [B@17cf20d%

why ?

加载中
0
红薯
红薯

直接在数据库中执行 select concat(round(85/100*100,2),'%') as result 得到的结果是 85.00%

如果你用 dbutils 得到的值不对,那你的代码肯定错了,贴代码出来看看

0
g
glonely
DbUtils.loadDriver("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://192.168.1.200:3306/manage", "root", "root");
QueryRunner queryRunner = new QueryRunner();
List<Map<String, Object>> list = null;	
		 
String sqlString = "select concat(round(85/100*100,2),'%') as result ";	
list = queryRunner.query(connection,sqlString, new MapListHandler());

0
g
glonely

我实际使用的SQL大概就是这样的..

只要在SQL语句里计算百分比,最后得出来的结果就是乱的..

 

0
g
glonely

代码直接在数据库里执行是正常的,调试跟踪过几次dbutils的代码,但没找到问题所在,水平不够..

 还往红薯大哥能指导下...万分感谢.

0
红薯
红薯

你用 List<Map<String, Object>> 是不对的,应该

List<String> list

然后用 ColumnListHandler 而不是 MapListHandler

另外你那个值是怎么来的,直接打印?

0
0
g
glonely

因为我这里给出的是个简单的SQL,实际场合里的SQL太长,我就没有复制出来.实际场合里的SQL是查一个结果集,而并不是我给出来的SQL一样只单独查询一个值,这只是个示例.

但反应的问题是一样的,就是在SQL语句里计算百分比,其他字段的值都正常,只有百分比的这个字段查询出来的值异常.

0
g
glonely

使用 sslect concat(round(85/100*100,2),'%') as result 这个语句查询出来的值是:

[B@1815bfb

 

 

0
红薯
红薯

 楼主,不是我怀疑你的 java 水平,可是你直接打印一个 List 对象,你还能指望它输出什么呢?:)

0
g
glonely

 难道我表述的不清楚?

select concat(round(85/100*100,2),'%') as result

System.out.println(list);

结果为: [{result=[B@1b6101e}]

result=[B@1b6101e

鱼北子
鱼北子
对啊,这样的打印结果就是这,是你没有理解@红薯的意思.
wartskcaj
wartskcaj
重写toString方法or 遍历list?
返回顶部
顶部