2014-04-25 48 views
1

我正在運行加載到ResultSet中的查詢。當我從ResultSet創建對象時,我使用ResultSet的各種get方法。 ResultSet是否將所有值存儲爲字符串,而不管它們在數據庫中如何定義?因此,如果查詢的結果是數字1,我​​可以撥打結果集商店值如何運行

rs.getString("result"); 
AND 
rs.getInt("result"); 

或者ResultSet的get方法必須對應一個正確的類型嗎?

+0

可能重複http://stackoverflow.com/questions/5157476/resultset-behavior-with-mysql-database-does-it-store-all-rows-in-memory –

+2

@ Mr.Pandey不同意。 – qqilihq

+0

@qqilihq:我說「可能」 –

回答

2

什麼是這裏重要的是變量的類型會收到返回的值。

例如,您可以在沒有任何問題的情況下使用返回int值的列中的rs.getString(),因爲數字是有效的字符串值(「1234」,「23,45」等)。

但是,您不能在字符串值的列中使用rs.getInt(),因爲返回的值對於int變量無效。

MySQL的幫助有有關此信息:

一般而言,任何MySQL數據類型可以轉換爲一個 java.lang.String中,任何數值類型可以被轉化成任何的 了Java數值類型,雖然可能會出現舍入,溢出或丟失精度。

這些MySQL數據類型可以隨時轉換爲這些Java類型:

  • CHAR,VARCHAR,BLOB,TEXT,ENUM和SET:java.lang.String中,java.io.InputStream中,java.io.Reader中,java.sql.Blob中,java.sql.Clob中

  • FLOAT,REAL,DOUBLE精度,數字,十進制,TINYINT,SMALLINT,MEDIUMINT,INTEGER,BIGINT:java.lang中。字符串, java.lang.Short,java.lang.Integer,java.lang.Long, java.lang.Double中,java.math.BigDecimal的

  • DATE,TIME,DATETIME,TIMESTAMP:java.lang.String中,java.sql.Date,java.sql.Timestamp中

More info Here