while(rs2.next()){
list.add(rs.getString("order_id"));

}
int n=list.size();//这里得到n的值是0,但是不应该啊
完整代码:package com.dong;import java.io.IOException;
import java.io.PrintWriter;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;public class UserCenterServlet extends HttpServlet {

 
/**
 * 
 */
private static final long serialVersionUID = -4438198904344572683L; public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {


     String user_level= null;
     
     
     ArrayList<String> list=new ArrayList<String>();
     
HttpSession session = request.getSession(true);
String user_id=(String)session.getAttribute("user_id");
response.setContentType("text/html;charset=utf-8"); ResultSet rs = null;
ResultSet rs1 = null;
ResultSet rs2 = null; OracleBean ob=new OracleBean();

String sql = "select u_order_tab.*,t.order_id,t.new_price,t.product_number,product_info.s_picture,product_info.product_name from " +
"(select *from lineitem_table where user_id='"+user_id+"') t,u_order_tab,product_info " +
"where t.order_id=u_order_tab.order_id and t.product_id=product_info.product_id";
String sql1="select users.user_level from users where user_id='"+user_id+"'";
// String sql2=""
rs2=ob.executeQuery(sql);
rs=ob.executeQuery(sql);
rs1=ob.executeQuery(sql1);

try {
while(rs2.next()){
list.add(rs.getString("order_id"));

}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
int n=list.size();
// int n=10;
String[] order_id=new String[n];
String[] new_price=new String[n];
 String[] product_number=new String[n];
 String[] orderstatus=new String[n];
     String[] s_picture=new String[n];
     String[] product_name=new String[n];
     String[] buyer_user_id=new String[n];
     String[] order_date=new String[n];
     String[] order_re_name=new String[n];
     String[] order_re_pcode=new String[n];
     String[] order_re_add=new String[n];
     String[] order_re_number= new String[n];
     String[] order_action= new String[n];
     String[] order_act_money= new String[n];
     String[] order_payment= new String[n];
int i = 0;
int weiquerenshouhuo=0;
int weifukuandingdan=0;
int lishidingdan=0;
try {
while (rs.next()) {



order_id[i] = rs.getString("order_id");
new_price[i] = rs.getString("new_price");
product_number[i] = rs.getString("product_number");
                orderstatus[i]=""+rs.getInt("orderstatus");
                s_picture[i]=rs.getString("s_picture");
                product_name[i]=rs.getString("product_name");
                buyer_user_id[i]=rs.getString("user_id");
                order_date[i]=rs.getString("order_date");
                order_re_name[i]=rs.getString("order_re_name");
                order_re_pcode[i]=rs.getString("order_re_pcode");
                order_re_add[i]=rs.getString("order_re_add");
                order_re_number[i]=rs.getString("order_re_number");
                order_action[i]=rs.getString("order_action");
                order_act_money[i]=rs.getString("order_act_money");
                order_payment[i]=rs.getString("order_payment");
i++;


}
} catch (SQLException e) {

e.printStackTrace();
}
try {
while(rs1.next()){
user_level=""+rs1.getInt("user_level");
}
} catch (SQLException e) {

e.printStackTrace();
}










for (int j=0;j<i;j++){
if (orderstatus[j].equals("0"))
weiquerenshouhuo++;
else if (orderstatus[j].equals("1"))
weifukuandingdan++;
else if(orderstatus[j].equals("2"))
lishidingdan++;
} for (int j = 0; j <i; j++) { session.setAttribute("order_id["+j+"]", order_id[j]); session.setAttribute("new_price["+j+"]", new_price[j]);
session.setAttribute("product_number["+j+"]", product_number[j]);
    session.setAttribute("orderstatus["+j+"]", orderstatus[j]);
    session.setAttribute("s_picture["+j+"]", s_picture[j]);
    session.setAttribute("product_name["+j+"]", product_name[j]);
    session.setAttribute("buyer_user_id["+j+"]", buyer_user_id[j]);
    session.setAttribute("order_date["+j+"]", order_date[j]);
    session.setAttribute("order_re_name["+j+"]", order_re_name[j]);
    session.setAttribute("order_re_pcode["+j+"]",  order_re_pcode[j]);
    session.setAttribute("order_re_add["+j+"]", order_re_add[j]);
    session.setAttribute("order_re_number["+j+"]", order_re_number[j]);
    session.setAttribute("order_act_money["+j+"]", order_act_money[j]);
    session.setAttribute("order_action["+j+"]", order_action[j]);
    session.setAttribute("order_payment["+j+"]", order_payment[j]);
}
session.setAttribute("weiquerenshouhuo", weiquerenshouhuo);
    session.setAttribute("weifukuandingdan",weifukuandingdan);
    session.setAttribute("lishidingdan", lishidingdan);
session.setAttribute("order_id_length", i);
    session.setAttribute("user_level", user_level);
    PrintWriter out = response.getWriter();
    out.println(sql);
    out.print("<br>");
   out.print(orderstatus[0]);
   out.print(order_re_add[0]);
   out.print(order_payment[0]);
   //out.print(al.size());
response.sendRedirect("/task/yonghu.jsp");
}}
本人的这段程序事项从数据库中提取几组数据,但是因为事先不知数据多少,所以先要用arraylist获取数据数目。
但是我知道这不是一个好的方法,可是具体的用arraylist然后迭代,不使用数组好像能实现,但我编了很长时间没变出来,哪位大侠能够给详细的说说啊,谢谢了!!

解决方案 »

  1.   

    debug单步跑一下,看list引用里的具体状况,是否是你想要读出来的那些String
      

  2.   

    while(rs2.next()){
    list.add(rs.getString("order_id")); //   rs2.getString........} 
    while rs2  -====>>> add(rs)  .. No.No.No.No.No.
      

  3.   

    rs2.next() =====》    list.add(rs
      

  4.   

    如楼上所讲:
    while(rs2.next()){
    list.add(rs.getString("order_id"));} 
    rs2和rs不同啊
    如果相同,就debug,看有没有order_id这个值
      

  5.   

    楼上的也说了你的问题了,
    只不我觉得看你session里面放这么多东西觉得不爽,提一下。
      

  6.   

    如楼上所讲: 
    while(rs2.next()){ 
    list.add(rs.getString("order_id")); } 
    rs2和rs不同啊 
    如果相同,就debug,看有没有order_id这个值
      

  7.   

    "(select *from lineitem_table where user_id='"+user_id+"') t,u_order_tab,product_info " + 我觉得是你的sql语句写的有问题啊