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代码来确定哪个是基于结果集的。
感谢。
答案 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是如此宝贵的信息来源!