我正在運行加載到ResultSet中的查詢。當我從ResultSet創建對象時,我使用ResultSet的各種get方法。 ResultSet是否將所有值存儲爲字符串,而不管它們在數據庫中如何定義?因此,如果查詢的結果是數字1,我可以撥打結果集商店值如何運行
rs.getString("result");
AND
rs.getInt("result");
?
或者ResultSet的get方法必須對應一個正確的類型嗎?
我正在運行加載到ResultSet中的查詢。當我從ResultSet創建對象時,我使用ResultSet的各種get方法。 ResultSet是否將所有值存儲爲字符串,而不管它們在數據庫中如何定義?因此,如果查詢的結果是數字1,我可以撥打結果集商店值如何運行
rs.getString("result");
AND
rs.getInt("result");
?
或者ResultSet的get方法必須對應一個正確的類型嗎?
什麼是這裏重要的是變量的類型會收到返回的值。
例如,您可以在沒有任何問題的情況下使用返回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中
是的,是的。您可以從MySQL獲得一個INT作爲一個java.lang.String,和的類型有映射
https://dev.mysql.com/doc/refman/5.0/es/connector-j-reference-type-conversions.html
希望這有助於
可能重複http://stackoverflow.com/questions/5157476/resultset-behavior-with-mysql-database-does-it-store-all-rows-in-memory –
@ Mr.Pandey不同意。 – qqilihq
@qqilihq:我說「可能」 –