zoukankan      html  css  js  c++  java
  • ResultSet转换为List的方法

    方法一:

    ResultSet转换为List的方法

    private static List convertList(ResultSet rs) throws SQLException {

    List list = new ArrayList();

    ResultSetMetaData md = rs.getMetaData();

    int columnCount = md.getColumnCount(); //Map rowData;

    while (rs.next()) { //rowData = new HashMap(columnCount);

    Map rowData = new HashMap();

    for (int i = 1; i <= columnCount; i++) {

    rowData.put(md.getColumnName(i), rs.getObject(i));

    }

    list.add(rowData);

    } return list;

    }

    方法二:

    /**
    * 通用取结果方案,返回list

    * @param rs
    * @return
    * @throws SQLException
    */
    public List extractData(ResultSet rs) throws SQLException {
    ResultSetMetaData md = rs.getMetaData();
    int num = md.getColumnCount();
    List listOfRows = new ArrayList();
    while (rs.next()) {
    Map mapOfColValues = new HashMap(num);
    for (int i = 1; i <= num; i++) {
    mapOfColValues.put(md.getColumnName(i), rs.getObject(i));
    }
    listOfRows.add(mapOfColValues);
    }
    return listOfRows;
    }

    /**
    * 通用取结果方案,返回JSONArray

    * @param rs
    * @return
    * @throws SQLException
    */
    public JSONArray extractJSONArray(ResultSet rs) throws SQLException {
    ResultSetMetaData md = rs.getMetaData();
    int num = md.getColumnCount();
    JSONArray array = new JSONArray();
    while (rs.next()) {
    JSONObject mapOfColValues = new JSONObject();
    for (int i = 1; i <= num; i++) {
    mapOfColValues.put(md.getColumnName(i), rs.getObject(i));
    }
    array.add(mapOfColValues);
    }
    return array;
    }

    ResultSet在的二纬结构可以用二维模型处理,即网格数据 处理这里模型时候,通常用list与与Map的合成,json语法格式本质上是map格式,所以在数据与java,js处理上可以做如上的抽取.

     

    方法三:

    原理就是用Map存放单条数据然后放到List里

    用起来可以这样调用 List list = rs.selectRS(sqlStr);

    for(int i=0;i<list.size;i++)
    {
        ((Map)list.get(i)).get("username");
    }
    这样的话就不用每次在写数据库连接了,而且有比较复杂的页面格式输出就可以通过对 i 的控制来实现了

    下面是具体实现类可以结合struts,webwork2的标签来用,我已经测试过了没问题
    我也看到一些人是自己写类来代替Map来用的

    package com;

    import conn.DBConnManager;
    import java.sql.*;
    import java.util.*;

    public class ResultGather 
    {
    private String sql;
    public ResultGather()
    {
      
    }
    public ResultGather(String sqlcom)
    {
       this.sql=sqlcom;
    }
    public List selectRS(String sqlStr)
    {
       this.sql = sqlStr;
       return selectRS(); 
    }
    public List selectRS()
    {
       List rsall = new ArrayList();
       Map rsTree;
       DBConnManager conn = null;
       Connection con = null;
       Statement stmt = null;
       ResultSet rs = null;
       try{
        conn = DBConnManager.getInstance();
        con = conn.getConnection("mssql");
        stmt = con.createStatement();
        rs = stmt.executeQuery(sql);
        ResultSetMetaData rsmd = rs.getMetaData();//取数据库的列名 我觉得名比1,2,3..更好用
        int numberOfColumns = rsmd.getColumnCount();
        while(rs.next())
        {
        rsTree = new HashMap(numberOfColumns);//注意要new
          for(int r=1;r<numberOfColumns+1;r++)
          {
           rsTree.put(rsmd.getColumnName(r),rs.getObject(r)); 
          }
          rsall.add(rsTree);
        }
       
       }catch(java.lang.Exception ex){
        ex.printStackTrace();
       }finally{
        try{
         if(rs!=null)
          rs.close();
         if(stmt!=null)
          stmt.close();
         if(conn!=null)
          conn.releaseConnection("mssql",con);
        }catch(Exception e){
        
        }   
       }
       return rsall;
    }
    }

    简单的东西 交流交流

    评论:自己写什么类哦,用spring的jdbc模板干脆 
    List lst=jdbcTemplate.queryForList(list);  

     

    方法四:

    将ResultSet 转成Map<String, List<String> >:

     

    public Map<String, ArrayList<String> > query(String sql){
     Map<String, ArrayList<String> > map = new HashMap<String, ArrayList<String> >();
     PreparedStatement preStat = null;
     try {
     preStat = conn.prepareStatement(sql);
     ResultSet rs = preStat.executeQuery();
     ResultSetMetaData rsMeta = rs.getMetaData();
     
    for(int i = 0; i < rsMeta.getColumnCount(); ++i){
    map.put(rsMeta.getColumnName(i+1), new ArrayList<String>());
    }
    while(rs.next()){
    for(int i = 0; i < rsMeta.getColumnCount(); ++i){
    String columnName = rsMeta.getColumnName(i+1);
    map.get(columnName).add(rs.getString(columnName));
    }
    }
     
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
    try {
    preStat.close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
      1. public Map<String, ArrayList<String> > query(String sql){  
      2.         Map<String, ArrayList<String> > map = new HashMap<String, ArrayList<String> >();  
      3.         PreparedStatement preStat = null;  
      4.         try {  
      5.             preStat = conn.prepareStatement(sql);  
      6.             ResultSet rs = preStat.executeQuery();  
      7.             ResultSetMetaData rsMeta = rs.getMetaData();  
      8.               
      9.             for(int i = 0; i < rsMeta.getColumnCount(); ++i){  
      10.                 map.put(rsMeta.getColumnName(i+1), new ArrayList<String>());  
      11.             }  
      12.             while(rs.next()){  
      13.                 for(int i = 0; i < rsMeta.getColumnCount(); ++i){  
      14.                     String columnName = rsMeta.getColumnName(i+1);  
      15.                     map.get(columnName).add(rs.getString(columnName));  
      16.                 }  
      17.             }  
      18.               
      19.         } catch (SQLException e) {  
      20.             // TODO Auto-generated catch block  
      21.             e.printStackTrace();  
      22.         }finally{  
      23.             try {  
      24.                 preStat.close();  
      25.             } catch (SQLException e) {  
      26.                 // TODO Auto-generated catch block  
      27.                 e.printStackTrace();  
      28.             }  
      29.         } 
  • 相关阅读:
    SpringCloud
    Springboot笔记
    SpringMVC学习随笔
    Spring中事务的理解
    Spring中Aop的理解
    FLutter 各种项目的目录创建
    flutter 打包Android 创建签名证书
    flutter web网站 第一次访问首屏页 空白卡顿 再显示
    flutter--报错--Flutter 调试时卡在 Installing buildappoutputsapkapp.apk
    flutter 顶部状态栏 底部栏 显示和隐藏
  • 原文地址:https://www.cnblogs.com/tiancai/p/15429755.html
Copyright © 2011-2022 走看看