【问题标题】:Put ResultSet into HashMap?将ResultSet放入HashMap?
【发布时间】:2012-01-13 15:26:52
【问题描述】:

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

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

然后在此处获取结果集:

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

这是不对的,能不能解释一下正确的做法?

【问题讨论】:

    标签: java database resultset


    【解决方案1】:

    您可能想要Map&lt;YourKeyType, Map&lt;String, Integer&gt;&gt;

    因此,您通过 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 );
    }
    

    【讨论】:

      【解决方案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);
      }
      

      【讨论】:

      • 为什么不直接使用列名从ResultSet中获取数据呢?
      • 据我所知,可以直接写rs.getString("Column1")而不是rs.getString(column1Pos);
      • 对不起,你是对的@O.Badr 我不确定用户为什么想要它。
      【解决方案3】:
       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);
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-12
        • 2016-12-22
        • 2013-10-31
        • 1970-01-01
        • 2021-11-15
        • 2014-06-05
        • 2013-06-30
        相关资源
        最近更新 更多