List封装ResultSet

public List getDataObject(String sql) { Session session = null; Connection conn = null; Statement stmt = null; ResultSet rs = null; List list= new ArrayList(); Map map; try { session = super.getSession(); conn = session.connection(); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); rs = stmt.executeQuery(sql); ResultSetMetaData rsmd = rs.getMetaData(); int numberOfColumns = rsmd.getColumnCount(); while(rs.next()) { rsTree = new HashMap(numberOfColumns); for(int r=1;r<numberOfColumns+1;r++){ map.put(rsmd.getColumnName(r),rs.getObject(r)); } list.add(map); } } catch (Exception ex) { ex.printStackTrace(); }finally{ try{ if(rs!=null)rs.close(); if(stmt!=null)stmt.close(); if(conn!=null){ conn.close(); } }catch(Exception e){ e.printStackTrace(); } } return list; }

说明:

     1、session是hibernate的SessionFactory实现open session  实现数据库的链接

     2、用connection创建一个将生成具有给定数据类型和并发性的ResultSet的Statement对象,

          其中常量ResultSet.TYPE_SCROLL_SENSITIVE 指示可滚动并且通常受 ResultSet 底层数据更改影响的 ResultSet 对象的类型

          常量ResultSet.CONCUR_READ_ONLY    该常量指示不可以更新的 ResultSet 对象的并发模式

    3、执行查询,用ResultSetMetaData来获取结果集中的数据信息,

         rsmd.getColumnCount();//可查询rs中有多少列

         rsmd.getColumnName();//可获取列名

    4、将列名和列对应的值添加到map中,再将map添加到list 返回list,实现封装。

 

 

 

你可能感兴趣的:(exception,session,list,HashMap,null,scroll)