论坛首页 入门技术论坛

select count(id) from table 返回值

浏览 8232 次
该帖已经被评为新手帖
作者 正文
   发表时间:2009-08-24   最后修改:2009-08-24

   环境说明:

      测试数据库为Mysql数据库,其他数据库未知

      测试语言为Java

      数据库操作使用dbutils包,不知和这个是否有关

   

    select count(id) from table这条SQL语句作用大家都明白什么作用了,本来一直认为返回值为一整形结果,但是试试胜于雄辩。 刚刚在写一个jsp程序,数据库操作使用了dbutils包,使用了select count(id) from table 这条语句计算table表中的记录数,结果使用Integer接收,运行测试,报错了

java.lang.ClassCastException: java.lang.Long

 

知道是类型转换的问题了,同时也迷惑的,count()的结果怎么是long类型的呢,不确定,在获取结果后面加入getClass方法,测试显示类型果真是Long类型的,这才确定count()的结果为Long类型了。但是Long类型怎么转成Integer类型呢,说实话还真没试过,在结果前面加入(Integer)强制转换,不行的哦。查文档,终于知道了原来在long类型结果后面加入.intValue()就能转换成功了。

 

PS:百度一下,得知hibernate版本之间也存在这个问题,在Hibernate3.0之前是Integer类型的,但是如果用了Hibernate3.0和Hibernate3.1之后就是Long类型的了,不知搞什么飞机

 

为了自己的学习、减少在程序上遇到类似的问题解决的需要,在此记录,以供后面的观者借鉴。

   发表时间:2009-08-24   最后修改:2009-08-24
.intValue()
另:jsp里可能不支持jdk5的autoboxing
0 请登录后投票
   发表时间:2009-08-24  
daquan198163 写道
.intValue()
另:jsp里可能不支持jdk5的autoboxing


对了,原来使用.SIZE明明是两条数据,却显示为64
使用.intValue()才成功
谢谢LS提醒
0 请登录后投票
   发表时间:2009-08-24  
count用String接....

0 请登录后投票
   发表时间:2009-08-24   最后修改:2009-08-24
汗。。intvalue..好基本 吧?
0 请登录后投票
   发表时间:2009-09-11  
不是吧,我使用的hibernate是这个版本:Hibernate-Version: 3.1.3

int num = (Integer) session.createQuery(
                    "select count(id) from Users").uniqueResult();

查看数据库对应用户表的记录条数,返回类型不是Long类型的,而且在项目中也没有发现转换异常
0 请登录后投票
   发表时间:2009-09-11  


这帖子发在入门版里面也应该被删除吧。。。。。。。????????????????????
2 请登录后投票
   发表时间:2009-09-11  
貌似MYSQL里面提取出来的数据没有INTEGER。。。。。。。。。。。。
0 请登录后投票
   发表时间:2009-09-11  
用的Oracle,返回的是Long
0 请登录后投票
   发表时间:2009-09-11  

。。。。。。。知道什么叫通用?????

返回值,你永远用long,不用int,不就没问题。

怕麻烦干脆,


long executerSql(String sql)
{
     Object obj=......执行查询的结果。。。。。
      return Long.parseLong(obj.toString());//速度巨快,绝对不损失效率
\\int 只能到21亿,不用
}



0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics