将ResultSet放入HashMap?

时间:2011-12-05 22:42:21

标签: java database resultset

我有一个mySQL ResultSet,我想将它存储在我的HashMap中:

Map<String, Integer> myMap = new HashMap<String, Integer>();

然后获取结果集:

while(rs.next()){                           
    rs.put("Column1","Column2");
}

这是不对的,有人可以解释正确的方法吗?

3 个答案:

答案 0 :(得分:11)

 List<Map<String, String>> list = new ArrayList<Map<String, String>>();
        ResultSetMetaData meta = rs.getMetaData();
        while (rs.next()) {
            Map map = new HashMap();
            for (int i = 1; i <= meta.getColumnCount(); i++) {
                String key = meta.getColumnName(i);
                String value = rs.getString(key);
                map.put(key, value);
            }
            list.add(map);
        }

答案 1 :(得分:2)

如果我正确地阅读了你的问题,那就是:

Map<String, Integer> myMap = new HashMap<String, Integer>();
...
// parsing the column each time is a linear search
int column1Pos = rs.findColumn("Column1");
int column2Pos = rs.findColumn("Column2");
while (rs.next()) {
    String column1 = rs.getString(column1Pos);
    int column2 = rs.getInt(column2Pos);
    myMap.put(column1, column2);
}

答案 2 :(得分:0)

您可能需要Map<YourKeyType, Map<String, Integer>>

因此,您将每行按id(无论何种类型)映射到列/值的映射。在这里,我假设每一列都是Integer,因为这是你在问题中所拥有的,但如果它们不同,你可以使用Object。然后你可以使用myMap.get(myId).get( "column1" );访问这些值,或者使用keySet()或者你需要做的任何事情来使用它。

要填充地图,您可以执行类似

的操作
Map<KeyType, Map<String, Object>> resultMap = new HashMap<KeyType, Map<String, Object>>();
while( rs.next()) {
    Map<String, Object> tmpMap = new HashMap<String, Object>();
    tmpMap.put( "Column1", rs.get( "Column1" );
    // etc. for other columns
    resultMap.put( rs.get( "id" ), tmpMap );
}