2011-08-29 49 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