ResultSet转换为List的方法

  1. ResultSet转换为List的方法 2009 - 10 - 11   23 : 17 方法一:  
  2.   
  3. ResultSet转换为List的方法  
  4.   
  5. private   static  List convertList(ResultSet rs)  throws  SQLException {  
  6.   
  7. List list = new  ArrayList();  
  8.   
  9. ResultSetMetaData md = rs.getMetaData();  
  10.   
  11. int  columnCount = md.getColumnCount();  //Map rowData;   
  12.   
  13. while  (rs.next()) {  //rowData = new HashMap(columnCount);   
  14.   
  15. Map rowData = new  HashMap();  
  16.   
  17. for  ( int  i =  1 ; i <= columnCount; i++) {  
  18.   
  19. rowData.put(md.getColumnName(i), rs.getObject(i));  
  20.   
  21. }  
  22.   
  23. list.add(rowData);  
  24.   
  25. return  list;  
  26.   
  27. }  
  28.   
  29. 方法二:  
  30.   
  31. /**  
  32. * 通用取结果方案,返回list  
  33.  
  34. * @param rs  
  35. * @return  
  36. * @throws SQLException  
  37. */   
  38. public  List extractData(ResultSet rs)  throws  SQLException {  
  39. ResultSetMetaData md = rs.getMetaData();  
  40. int  num = md.getColumnCount();  
  41. List listOfRows = new  ArrayList();  
  42. while  (rs.next()) {  
  43. Map mapOfColValues = new  HashMap(num);  
  44. for  ( int  i =  1 ; i <= num; i++) {  
  45. mapOfColValues.put(md.getColumnName(i), rs.getObject(i));  
  46. }  
  47. listOfRows.add(mapOfColValues);  
  48. }  
  49. return  listOfRows;  
  50. }  
  51.   
  52. /**  
  53. * 通用取结果方案,返回JSONArray  
  54.  
  55. * @param rs  
  56. * @return  
  57. * @throws SQLException  
  58. */   
  59. public  JSONArray extractJSONArray(ResultSet rs)  throws  SQLException {  
  60. ResultSetMetaData md = rs.getMetaData();  
  61. int  num = md.getColumnCount();  
  62. JSONArray array = new  JSONArray();  
  63. while  (rs.next()) {  
  64. JSONObject mapOfColValues = new  JSONObject();  
  65. for  ( int  i =  1 ; i <= num; i++) {  
  66. mapOfColValues.put(md.getColumnName(i), rs.getObject(i));  
  67. }  
  68. array.add(mapOfColValues);  
  69. }  
  70. return  array;  
  71. }  
  72.   
  73. ResultSet在的二纬结构可以用二维模型处理,即网格数据 处理这里模型时候,通常用list与与Map的合成,json语法格式本质上是map格式,所以在数据与java,js处理上可以做如上的抽取.  
  74.   
  75.   
  76. 方法三:  
  77.   
  78. 原理就是用Map存放单条数据然后放到List里  
  79.   
  80. 用起来可以这样调用 List list = rs.selectRS(sqlStr);  
  81.   
  82. for ( int  i= 0 ;i<list.size;i++)  
  83. {  
  84.     ((Map)list.get(i)).get("username" );  
  85. }  
  86. 这样的话就不用每次在写数据库连接了,而且有比较复杂的页面格式输出就可以通过对 i 的控制来实现了  
  87.   
  88. 下面是具体实现类可以结合struts,webwork2的标签来用,我已经测试过了没问题  
  89. 我也看到一些人是自己写类来代替Map来用的  
  90.   
  91. package  com;  
  92.   
  93. import  conn.DBConnManager;  
  94. import  java.sql.*;  
  95. import  java.util.*;  
  96.   
  97. public   class  ResultGather   
  98. {  
  99. private  String sql;  
  100. public  ResultGather()  
  101. {  
  102.     
  103. }  
  104. public  ResultGather(String sqlcom)  
  105. {  
  106.    this .sql=sqlcom;  
  107. }  
  108. public  List selectRS(String sqlStr)  
  109. {  
  110.    this .sql = sqlStr;  
  111.    return  selectRS();   
  112. }  
  113. public  List selectRS()  
  114. {  
  115.    List rsall = new  ArrayList();  
  116.    Map rsTree;  
  117.    DBConnManager conn = null ;  
  118.    Connection con = null ;  
  119.    Statement stmt = null ;  
  120.    ResultSet rs = null ;  
  121.    try {  
  122.     conn = DBConnManager.getInstance();  
  123.     con = conn.getConnection("mssql" );  
  124.     stmt = con.createStatement();  
  125.     rs = stmt.executeQuery(sql);  
  126.     ResultSetMetaData rsmd = rs.getMetaData();//取数据库的列名 我觉得名比1,2,3..更好用   
  127.     int  numberOfColumns = rsmd.getColumnCount();  
  128.     while (rs.next())  
  129.     {  
  130.     rsTree = new  HashMap(numberOfColumns); //注意要new   
  131.       for ( int  r= 1 ;r<numberOfColumns+ 1 ;r++)  
  132.       {  
  133.        rsTree.put(rsmd.getColumnName(r),rs.getObject(r));   
  134.       }  
  135.       rsall.add(rsTree);  
  136.     }  
  137.      
  138.    }catch (java.lang.Exception ex){  
  139.     ex.printStackTrace();  
  140.    }finally {  
  141.     try {  
  142.      if (rs!= null )  
  143.       rs.close();  
  144.      if (stmt!= null )  
  145.       stmt.close();  
  146.      if (conn!= null )  
  147.       conn.releaseConnection("mssql" ,con);  
  148.     }catch (Exception e){  
  149.       
  150.     }     
  151.    }  
  152.    return  rsall;  
  153. }  
  154. }  
  155.   
  156. 简单的东西 交流交流  
  157.   
  158. 评论:自己写什么类哦,用spring的jdbc模板干脆   
  159. List lst=jdbcTemplate.queryForList(list);    
  160.   
  161.   
  162. 方法四:  
  163.   
  164. 将ResultSet 转成Map<String, List<String> >: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值