我想问,在servlet中如何把结果集存入outputStream,然后客户端用inputStream读取结果下面有个查询结果是一件的例子,如果是多件结果,用while(w_result.next())循环
也可以实现,但是这样做,用InputStream读取的话,字段都连在一起,又没有
好的办法可以方便存取呢。或者又没有办法把数组(或者hashtable)存入OutputStream?
       ResultSet w_result = w_statement.executeQuery
        ("select data from t_test where name = '" + w_name + "'");
      //读入SQL执行结果
      w_result.next();
      w_data = w_result.getString("data");
      w_result.close();
      //关闭处理
      w_statement.close();
      w_connect.close();
    } catch (Exception e) {
    }
 
    byte[] w_res = w_data.getBytes("SJIS");
    p_response.setContentType("application/octet-stream");
    p_response.setContentLength(w_res.length);
    OutputStream w_os = p_response.getOutputStream();
    w_os.write(w_res);
    w_os.close();

解决方案 »

  1.   

    楼主的关闭写的不够严紧。   try{
    }catch()
    finnaly()
    {
      try{
    if(w_result!=null){
      w_result.close()
    }
    }
    }
    用List
      

  2.   

    谢谢why_java的提醒现在知道outputStream不能存List,vector,hashtable另期望大家给出建议,想法也可以,不必非要代码
      

  3.   

    我不理解的是为什么要用outputStream存放数据用inputStream存取呢。
    常用的方法都是将数据库中的字段对应的建立一个pojo
    List<Pojo> list=new ArrayList<Pojo>();
    将数据添加到Pojo类中,最后全部塞给List,在客户端直接循环遍历显示就行了么!
      

  4.   

    可以存成这样 字段a=1,字段b=2,...;字段a=3,字段b=4,...;
    在前台进行解析当然用pojo然后放到response中也是可以的。
      

  5.   

    感谢closewbq flybird的建议由于本人做这个Project 客户端与服务器通信接口的限制,只能使用Http的GET/POST方法
    所以客户端request,服务器端response,只有通过outputStream和inputStream来传递接收数据
    flybird和我想的差不多,取得的结果字段用;等字符隔开,每个结果集用换行符(/n)加以区分后写入
    outputStream客户端inputStream读取之后,再解析(有点麻烦,但没有更好的方法了吧?)