resultSet如何存储值

时间:2014-04-25 20:26:45

标签: java sql

我正在运行加载到ResultSet中的查询。当我从ResultSet创建我的对象时,我使用ResultSet的各种get方法。 ResultSet是否将所有值存储为字符串,无论它们在数据库中定义的是什么?因此,如果查询结果为数字1,我​​可以调用

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

或者ResultSet的get方法是否必须对应正确的类型?

2 个答案:

答案 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

  •   

More info Here