Поместить ResultSet в HashMap? - PullRequest
       2

Поместить ResultSet в HashMap?

2 голосов
/ 06 декабря 2011

У меня есть MySQL ResultSet, и я хочу сохранить его в моей HashMap:

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

Получает результат, установленный здесь:

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

Это не правильно, могут ли некоторые объяснить правильный способ сделать это, пожалуйста?

Ответы [ 3 ]

11 голосов
/ 23 июня 2014
 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);
        }
2 голосов
/ 06 декабря 2011

Если я правильно прочитал ваш вопрос, это было бы что-то вроде:

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);
}
0 голосов
/ 06 декабря 2011

Вы, вероятно, хотите 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 );
}
...