这样不好,result需要和connection绑在一起的,如果这样传递rs,那么connection也不能断,一个连接要占用很久的说connection一旦断掉,传过去的rs也白瞎了

解决方案 »

  1.   

    通用方法接收一个sql语句 返回一个装有LinkedHashMap的ArrayList集合 其中LinkedHashMap的KEY为数据库字段名 VALUE为该字段的值
    public static ArrayList delRes(String sql) {
      ArrayList<LinkedHashMap> list = new ArrayList<LinkedHashMap>();
      Connection conn = null;
      PreparedStatement stmt = null;
      ResultSetMetaData metaData=null;
      try {
        conn = ConDB.getCon();
        stmt = (PreparedStatement) conn.prepareStatement(sql);
        ResultSet result = stmt.executeQuery();
        metaData=result.getMetaData();
        while (result.next()) {
    LinkedHashMap v = new LinkedHashMap();
    for (int i = 1; i <= metaData.getColumnCount(); i++)
      v.put(metaData.getColumnLabel(i),result.getObject(i));
    list.add(v);
        }
      } catch (SQLException e) {
        e.printStackTrace();
      } finally {
        try {
    if (stmt != null) {
       stmt.close();
    }
    if (conn != null) {
       conn.close();
    }
        } catch (SQLException e) {
    e.printStackTrace();
        }
      }
      return list;
    }
    用返回的list在页面上迭代显示就好了 程序连接过数据库后一定要关闭 否则服务器负载很大的 当多次使用或多人使用后服务器会down掉的  就算有连接池的话最好也关闭
      

  2.   

    封装到formbean里  只要将formbean对象传过去就ok了
      

  3.   

    看数据量大小.不是绝对的,jvm和数据库一样脆弱.最好用集合或bean保存.
      

  4.   

    谢谢大家详尽的解释,特别是WIN_ANGEL(WIN_ANGEL) 大侠,说的很详细,我以前一般只会使用Vector来装ResultSet对象的,用装有LinkedHashMap的ArrayList集合来存放我还试过,呵呵,其实我提出这个问题是因为我们公司里面有一个人是直接把ResultSet来request过去,我看的清清楚楚的,但就不知道这种做法好在哪里,有时也不方便问。