请教大家了,JAVA读取oracle的number(9)的数据字段读出来是什么类型

06-08-29 jacal

有一个新闻表T_NEWS中的DOCHITS字段设置为

create table t_news(

... ...

dochits number(9),

... ...

)

在java,采用jdon的框架,

代码如下:

  public void setNewsAccessCount(String newsid) throws SQLException {

         String GET_HITS = "select DOCHITS from T_NEWS where NEWSID=?";
        List queryParams = new ArrayList();
        System.out.println("newsid = "+newsid);
        queryParams.add(newsid);
        Long ret = null;
        try {
            List list = jdbcTempSource.getJdbcTemp().queryMultiObject(
                    queryParams,
                    GET_HITS);
            Iterator iter = list.iterator();
            if (iter.hasNext()) {
                Map map = (Map) iter.next();
                ret = (Long) map.get("DOCHITS");
            }
            if (ret!=null) {
                ret = new Long(ret.longValue() + 1);
            }else {
                ret = new Long(1);
            }
            if(ret==null) {
                throw new SQLException("Counld not get DOCHITS value.");
            }else{
                System.out.println(ret.longValue());
            }
          
          // String updatesql = "update T_NEWS set DOCHITS=? WHERE NEWSID=?";
          // queryParams.clear();
          // queryParams.add(ret);
          // queryParams.add(newsid);

         //  jdbcTempSource.getJdbcTemp().operate(queryParams, updatesql);


        } catch (Exception e) {
            logger.error(e);
            throw new SQLException("SQLException: "+ e.getMessage());
        }
     }

抛出异常:java.lang.ClassCastException

我分析应该是ret = (Long) map.get("DOCHITS");这行转换数据类型抛出的异常,但一直不知道该怎么做。

banq
2006-08-31 09:36

number应该是Integer整数吧,你试验看看。查查JDBC 有关文档

jacal
2006-09-07 11:18

多谢banq的回复!

经过多方面的测试,发现读出来的类型是java.math.BigDecimal

采用

bigDec = (java.math.BigDecimal)map.get("DOCHITS");

就可以