以LinkedHashMap和ArrayList的结合使用,返回一个类似记录集的ArrayList

    技术2022-05-11  75

    通过LinkedHashMap和ArrayList的结合使用,将传入方法中的SQL查询语句存在一个包含多个LinkedHashMap的ArrayList返回。类似将一个查询的记录集返回一样。

    LinkedHashMap是一个有链接的HashMap,即键值对的次序是插入的次序。

    getConn();方法为一个连接数据库方法。

     

    //*************************** 查询数据 ******************************// /**  *   * @param selectSQL:要查询的SQL语句  * @return:ArrayList数据集,里面包含hashMap  */   public static ArrayList getDataList(String selectSQL) {  ArrayList<LinkedHashMap <String, Object>> al = new ArrayList<LinkedHashMap <String, Object>>(); try {

       getConn();//连接到数据库中   stmt = conn.createStatement();   rs = stmt.executeQuery(selectSQL);   rsmd = rs.getMetaData();   while(rs.next())   {    //HashMap<String, Object> map = new HashMap<String, Object>();    LinkedHashMap  map = new LinkedHashMap ();/每循环一次/实例化一个Map。    for(int i=1; i<=rsmd.getColumnCount(); i++)    {          map.put(rsmd.getColumnName(i), rs.getObject(rsmd.getColumnName(i)));    }    al.add(map);//将MAP添加到ArrayList中.   }  } catch (Exception e) { e.printStackTrace();}  finally  {   try {    if(!conn.isClosed())//如果接连未关闭    {      rs.close();     stmt.close();     conn.close();    }   } catch (Exception e) {    e.printStackTrace();   }  }    return al;   } 

    //**********************************取ArrayList里的值。

    由于返回的是一个ArrayList,而ArrayList所包含的是LinkedHashMap,所以将ArrayList集合遍历一次,在每一次的遍历中再取出其包含的LinkedHashMap.对于Map可通过KeySet()方法取出在LinkedHashMap 中的所有关键字,实现的代码如下:

      for(int i=0;i<list.size();i++)  {   map = (LinkedHashMap)list.get(i);       for(int j=0;j<map.keySet().size();j++)       {               System.out.println(map.get(map.keySet().toArray()[j]));       }  }   


    最新回复(0)