我用反射管理了数据库的取出,每个表都要有一个对应的vo。。现在遇到了一个很奇怪的问题。。从数据库里,用ResultSet.getObject()取值,如果数据库是非字符串类型的数据
无论是1还是2或是一百亿。在反射那边用Object.getClass()得到的都是Long类型。。请问有什么办法能让数据是1,2 是int类型,数据是一百亿是long 类型么?不然写起VO时连存一个布尔值都要用Long 觉得怪怪的,貌似也挺占内存。。

解决方案 »

  1.   

    数据库字段定义是 int 2 也这样。。
      

  2.   

    你用的是什么数据库?oracle??
    我用 的mysql可以正常获取到数据的类型,这应该跟数据库驱动的实现有关
      

  3.   

    你好,我是用mysql,取出的某些字段只是 int(1) int(2) 用来存储设置的。。
    但得到的结果也是Long
      

  4.   

    ResultSet rs = pstmt.executeQuery();
    ResultSetMetaData rsmd = rs.getMetaData();
    rs.next();
    for (int i = 1; i <= rsmd.getColumnCount(); i++) {
    System.out.println(rs.getObject(rsmd.getColumnLabel(i)).getClass());
    }// 打印出来的class是正常的,integer,date..都能获取到
    我的数据库版本是5.1.7.驱动也是.应该没关系呀