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

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

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

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

 

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

   getConn();//连接到数据库中
   stmt = conn.createStatement();
   rs = stmt.executeQuery(selectSQL);
   rsmd = rs.getMetaData();
   while(rs.next())
   {
    //HashMap map = new HashMap();
    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  {
   map = (LinkedHashMap)list.get(i);
       for(int j=0;j       {    
           System.out.println(map.get(map.keySet().toArray()[j]));
       } 
 }
   

你可能感兴趣的:(以LinkedHashMap和ArrayList的结合使用,返回一个类似记录集的ArrayList)