通过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])); } }