2011-08-29 42 views
1
while(rs.next()){ 
      Object o = rs.getObject(i); 
      System.out.println(o.getClass()); //prints java.lang.Integer 
} 

问题是我在数据库中有一个smallint类型,驱动程序返回一个Integer类型。我在运行时正在做一些逻辑,然后尝试使用我以前由数据库交给的类型将值插回到数据库中。db2驱动返回java.lang.Integer for smallint

我想让DB2返回一个java.lang.Short,但我不确定这是否可能。

有没有人遇到过这个,你做了什么解决方法?

基本问题是 - 我在DB2数据库中有int和smallint列,我需要我的java代码来确定哪一个是基于结果集的。

谢谢。

回答

2

而不是依赖于Java对象的类型退换,询问结果集的列的实际数据库类型:

String databaseTypeName = resultSet.getMetadata().getColumnTypeName(columnIndex); 

int sqlType = resultSet.getMetadata().getColumnType(); 
boolean isSmallInt = (sqlType == Types.SMALLINT); 

http://download.oracle.com/javase/6/docs/api/java/sql/ResultSetMetaData.html。 javadoc是如此宝贵的信息来源!

+0

试过了。类型仍然是整数 - 对于int和smallint列。 – Kapsh

+0

啊哈。 int值是有意义的。你答案中的第一个电话没有帮助,但第二个电话是。 – Kapsh