select count(1) 语句在mysql与sql server中使用Db.queryInt(),Db.queryLong()问题

不知道对不对,请指点!

mysql数据库中使用Db.queryLong(sql);提示:java.lang.Integer cannot be cast to java.lang.Long;

sql server数据库中使用Db.queryInt(sql);提示:java.lang.Long cannot be cast to java.lang.Integer;

mysql与sql server中使用Db.queryNumber(sql);正常;

总结一下问题:

------------------------------------------------------------

mysql数据库中

blob.png

执行select count(1) 时,Db.queryInt()报错;

--------------------------------------------------------------

sql server数据库中

blob.png

执行Db.queryLong();报错

----------------------------------------------------------------

追加:@Jfinal 所说3.2版本已验证,都没有问题

评论区

JFinal

2017-10-17 11:33

select count(1) 即便是 int 类型,也会被 JDBC 给转成 Long 类型,这个是 JDBC 决定的

解决办法二选其一:
1:升级到 jfinal 3.2 , 这个版本对这种情况进行了自动类型转换
2:心中要清楚 count(...) 函数以后 JDBC 所返回的类型,然后使用正确的 queryXxx 方法

例如,心中知道结果是 Long 就用 queryLong,如果知道是 Integer 就用 queryInt

jFinal老四

2017-10-18 11:16

@JFinal Jfinal3.2测试没有问题,全部通过!感谢。

JFinal

2017-10-18 11:36

@jFinal老四 jfinal 就是这样一步步迭代式发展的,通过大家的反馈不断改进,同时还要保持架构的优雅,以及对前面版本的兼容性

热门分享

扫码入社