通过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]));
}
}
评论
发表评论

您还没有登录,请登录后发表评论

tcrct
  • 浏览: 3758 次
  • 性别: Icon_minigender_1
  • 来自: 被遗忘的角落...
  • 详细资料
搜索本博客
最近加入圈子
存档
最新评论