MySQL将预定义的列值返回为Int

时间:2016-05-28 15:43:35

标签: java mysql

我有一个mysql查询预先定义了查询中一个整数类型的列:

SELECT id, 1 AS item_id from table WHERE other_id = 1;

当我在Java中检索此语句时,我得到一个ClassCastException:

java.lang.Float cannot be cast to java.lang.Integer

我尝试使用UNSIGNED类型将值转换为整数:

SELECT id, CAST(1 AS UNSIGNED) AS item_id from table WHERE other_id = 1;

但这给了我同样的错误:

java.math.BigInteger cannot be cast to java.lang.Integer

我不确定这是否是我需要在Java或实际的sql语句中修复的内容,但我希望将值作为整数返回。

我可以想象在Java中唯一能引起问题的地方是我将值作为对象,因为我将记录存储为hashmap并且不知道确切的列类型。不幸的是,我无法改变这一点。

ResultSetMetaData metaData = resultSet.getMetaData();
int columnCount = metaData.getColumnCount();
while(resultSet.next()) {
    HashMap<String, Object> row = new HashMap<String, Object>();
    for(int i=1; i<=columnCount; i++) {
        row.put(metaData.getColumnName(i), resultSet.getObject(i));
    }
    list.add(row);
}

1 个答案:

答案 0 :(得分:2)

好吧,如果你&#34;想想&#34;该列必须仅包含整数,您应该在表中UPDATE列。

如果您想快速解决此问题,只需将收到的结果转换为Java。

int a = (int) rs.getObject("item_id");