我有一个mySQL ResultSet,我想把它存储在我的HashMap中:
Map<String, Integer> myMap = new HashMap<String, Integer>();
获取这里的结果集:
while(rs.next()){
rs.put("Column1","Column2");
}
这是不对的,有人能解释一下正确的方法吗?
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);
}
如果我没看错的话,应该是这样的:
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);
}
您可能需要一个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 );
}