有方法如下:
public List<Map> getList() throws SQLException {
   List<Map> lt = new LinkedList<Map>();
   int columnCount = 0;
   if (rs != null) {
   ResultSetMetaData rsmd = this.rs.getMetaData();
   columnCount = rsmd.getColumnCount();
   // System.out.println(rsmd.getColumnCount());
   while (rs.next()) {
Map map = new HashMap();
for (int i = 1; i <= columnCount; i++) {
     String columnName = rsmd.getColumnName(i);
   int columnType = rsmd.getColumnType(i);
/* 根据数据库类型,映射对应java类型存入Map,我只写了String,double和int,请高手指点,其他数据库类型该如何映射 */
   if (columnType == Types.INTEGER
        || columnType == Types.BIGINT
|| columnType == Types.SMALLINT) {
map.put(columnName, rs.getInt(columnName));
} else if (columnType == Types.VARCHAR
   || columnType == Types.NVARCHAR
   || columnType == Types.CHAR) {
      map.put(columnName, rs.getString(columnName));
   } else if (columnType == Types.FLOAT
|| columnType == Types.DOUBLE
|| columnType == Types.NUMERIC) {
  map.put(columnName, rs.getDouble(columnName));
} else {
          map.put(columnName, rs.getString(columnName));
}
        }
lt.add(map);
         }
}
return lt;
}

解决方案 »

  1.   

    datetime或者timestamp可以射映成java.util.Date或者java.sql.Timestamp别的一时想不起来了。看看HIBERNATE的映射吧。
      

  2.   

    日期:  Types.DATE ||Types.TIME ||Types.TIMESTAMP 当java.sql.Date处理
     
      

  3.   

    个人认为rsmd.getColumnType(i)返回的就应该是jdbc类型的type,直接存到map中就可以了。退一步,如果rsmd.getColumnType(i)返回的是数据库类型.你拿它去和JDBC类型的(Types.xxx)去比较有什么意义呢?因为java.sql.Types中都是JDBC类型的.再者各个数据库中的类型不完全一致,如果让你去写一个程序来处理从数据库类型转到
    JDBC类型,你一定不会把现在和以前的所有数据库类型对应一遍都写到程序中吧.当然Sun公司也不会,他们一定会让各个数据库厂商去做这件事情.所以Sun公司只写了JDBC这套接口,而用不同的数据库要加载相应数据库的驱动包(ojdbc14.jar不陌生吧),这个类型对应就在这个驱动包中实现。这样各个数据库厂商只要管理自己数据库中的类型和JDBC类型的对应就可以了。