2010-01-15 82 views
17

我在格式化ResultSet以輸出爲CSV文件。因此,我真的不關心結果集的Java類型,除了可能知道它是文本還是數字。JDBC ResultSet getString是否總是返回一個String表示形式?

不JDBC保證的getString總會給的值的字符串表示,至少對於單值(我不需要關心自己約java.sql.Types.ARRAYjava.sql.Types.JAVA_OBJECT和其他一些)。

例如給定resultSetMetaData.getColumnType(i)Types.FLOATTypes.BIGDECIMAL。將rs.GetString(i)總是產生一些字符串?

即有getString會拋出一個SQLException或getXXX會給我的值返回null嗎?

回答

11

是啊,看看這個:http://java.sun.com/docs/books/tutorial/jdbc/basics/retrieving.html

JDBC讓很多緯度,只要其getXXX方法可用於檢索不同的SQL類型。例如,getInt方法可用於檢索任何數字或字符類型。它檢索的數據將被轉換爲int;也就是說,如果SQL類型爲VARCHAR,則JDBC將嘗試從VARCHAR中解析出一個整數。 getInt方法建議僅用於檢索SQL INTEGER類型,但不能用於SQL類型BINARY,VARBINARY,LONGVARBINARY,DATE,TIME或TIMESTAMP。

但要小心,不同的JDBC驅動程序可能會產生不同的結果。

+0

**鏈接指南的更新:**'請注意,雖然建議使用方法getString來檢索SQL類型CHAR和VARCHAR,但可以使用它檢索任何基本SQL類型。使用getString獲取所有值可能非常有用,但它也有其侷限性。例如,如果它用於檢索數字類型,getString將數字值轉換爲Java String對象,並且必須將該值轉換回數字類型,然後才能將其作爲數字進行操作。在無論如何將該值視爲字符串的情況下,沒有缺點 – Nefreo 2014-06-30 13:37:03

5

java.lang.String是一個最終的類 - 它永遠不會有一個子類。因此,任何返回String的方法都將返回類java.lang.Stringnull的實例,或者拋出異常。

至於轉換,如果它允許您從非字符串類型進行轉換,則由JDBC驅動程序決定。我懷疑很多人會遇到問題。

,我建議你這樣做,而不是:

Object item = resultSet.getObject(i); 
String strValue = (item == null ? null : item.toString()); 

這應該是更強大的,因爲getObject()將永遠做合理的事情。

+0

或拋出'SQLException' – kdgregory 2010-01-15 13:40:22

+3

這就是問題,有沒有例子getString會拋出一個SQLException或返回null當getXXX會給我的價值? – Anonym 2010-01-15 13:41:16

相關問題