开发者社区> 问答> 正文

有关Java从数据库中获取数据的类型转化问题

用的是jfinal+mysql。。查询语句中有一个字段
IFNULL(a,b) as STATUS
查出来之后。发觉有时候是LONG,有时候是INTEGER.
a,b的定义都是int
想问下为什么会有这种情况?
因为我取出来之后是要做一个值比较判断。用Long或者Integer去接收这个值都会有时候出现CLASSCASTEXCEPTION问题。。

展开
收起
落地花开啦 2016-02-15 15:56:35 2387 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    JFinal 将数据从 ResultSet 中读取出来时并未对对数据进行转换(CLOB、BLOB类型除外),如果出现int 自动转 long 肯定是 JDBC 自己的行为。
    以前出现 int 字段转 long 的例子:
    `Long sum = Db.queryLong("select sum(money) from account where id=123");
    ` 这里假定 money 是 int 型,但使用了 sum 函数,jdbc 就一定会将之转成long 值结果,这是因为sum出来的结果int保存可能会溢出。
    而你碰到的情况或许也与上面的例子类似,是因为在 sql 中使用了函数

    2019-07-17 18:43:22
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载