db2驱动程序返回smallint的java.lang.Integer

时间:2011-08-29 19:32:41

标签: java jdbc db2

while(rs.next()){
          Object o = rs.getObject(i);
          System.out.println(o.getClass()); //prints java.lang.Integer
}

问题是我在数据库中有一个smallint类型,驱动程序返回一个Integer类型。我在运行时做了一些逻辑,然后尝试使用我之前由DB提供的类型将值插回到数据库中。

我希望DB2给我一个java.lang.Short,但我不确定这是否可能。

之前是否有人遇到此问题,您为解决方法做了什么?

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

感谢。

1 个答案:

答案 0 :(得分: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是如此宝贵的信息来源!