我正在运行加载到ResultSet中的查询。当我从ResultSet创建我的对象时,我使用ResultSet的各种get方法。 ResultSet是否将所有值存储为字符串,无论它们在数据库中定义的是什么?因此,如果查询结果为数字1,我可以调用
rs.getString("result");
AND
rs.getInt("result");
或者ResultSet的get方法是否必须对应正确的类型?
答案 0 :(得分:4)
是的,是的。您可以从MySQL获取INT作为java.lang.String,和类型具有映射
https://dev.mysql.com/doc/refman/5.0/es/connector-j-reference-type-conversions.html
希望这有帮助
答案 1 :(得分: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 PRECISION,NUMERIC,DECIMAL,TINYINT,SMALLINT,MEDIUMINT,INTEGER,BIGINT :java.lang.String, 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