通过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]));
}
}
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]));
}
}
发表评论
- 浏览: 3758 次
- 性别:

- 来自: 被遗忘的角落...

- 详细资料
搜索本博客
最新评论
-
改变Eclipse及NetBeans的 ...
一起努力吧!
-- by tcrct -
改变Eclipse及NetBeans的 ...
老唐,加油!
-- by 深秋小雨 -
spring+hibernate保存blob ...
getContentString()这个方法不行啊 ,不信你自己试试!
-- by kevlin -
spring+hibernate保存blob ...
在javabean里不是有一个getContentString()的方法吗?用这 ...
-- by tcrct -
spring+hibernate保存blob ...
好多都是想文件,跟图片的处理啊。可是我的是是超过10000个字的中文啊。那要是处 ...
-- by kevlin






评论排行榜