从数据库里取出值来放到ARRAYLIST 里了,
然后循环取出来。怎么取打印出来的,值总是把最后的一条记录打印好几遍那?|
下面是代码、。 list =menu.selectcdb("1000000010001000");
Iterator it = list.iterator();
while(it.hasNext())
{
form=(CdzhglForm)it.next();
System.out.println(form.getM_name());
}
这时用ITERATOR取值的;
 String m_names="";
for (int i=0;i<list.size();i++){
form =(CdzhglForm)list.get(i);
m_names=form.getM_name();
System.out.println(m_names);
}这是用FOR循环取值的,执行这个连个的结果都一样
这是结果:menu3
menu3
menu3正确输出应该是:
menu1
menu2
menu3
高手们,这是怎么弄的,能教教小弟吗?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【yzg000123】截止到2008-07-09 15:22:38的历史汇总数据(不包括此帖):
    发帖的总数量:26                       发帖的总分数:900                      每贴平均分数:34                       
    回帖的总数量:46                       得分贴总数量:5                        回帖的得分率:10%                      
    结贴的总数量:26                       结贴的总分数:900                      
    无满意结贴数:7                        无满意结贴分:180                      
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:26.92 %               无满意结分率:20.00 %                  
    敬礼!
      

  2.   

    list =menu.selectcdb("1000000010001000"); 
    这句话是取值的么?selectcdb()这个方法怎么写的?
      

  3.   

    你List里面是不是全是Menu3啊??
    debug看看
      

  4.   

    list =menu.selectcdb("1000000010001000"); 
    怀疑list里每一个元素均为同一个CdzhglForm对象的引用,请仔细查selectcdb方法!
      

  5.   

    public ArrayList selectcdb(String zhid){
    con = this.getDB();
    ArrayList list = new ArrayList();
    String sql = "select m.m_name,m.m_url from usertable u,menutable m,r_m_table rm,u_r_table ur,roletable r where rm.m_id =m.m_id and u.u_id=ur.u_id and r.r_id=rm.r_id and ur.r_id = r.r_id and u.u_id=?";
    CdzhglForm form = new CdzhglForm();
    try {
    pstm = con.prepareStatement(sql);
    pstm.setString(1,zhid);
    rs = pstm.executeQuery();
    while(rs.next()){
    form.setM_name(rs.getString("m_name"));
    form.setM_url(rs.getString("m_url"));
    list.add(form);
    }
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return list;
    }
    这是那个方法了,我不知道哪有问题啊~
      

  6.   


    try { 
    pstm = con.prepareStatement(sql); 
    pstm.setString(1,zhid); 
    rs = pstm.executeQuery(); 
    while(rs.next()){ 
    CdzhglForm form = new CdzhglForm(); //放到这里来
    form.setM_name(rs.getString("m_name")); 
    form.setM_url(rs.getString("m_url")); 
    list.add(form); 

    } catch (SQLException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 

    return list; 

      

  7.   

    问题解决了,下面公布结果,
    原来是selectcdb()的问题。只要把CdzhglForm form = new CdzhglForm();写到WHILE循环里就行了· public ArrayList selectcdb(String zhid){ 
    con = this.getDB(); 
    ArrayList list = new ArrayList(); 
    String sql = "select m.m_name,m.m_url from usertable u,menutable m,r_m_table rm,u_r_table ur,roletable r where rm.m_id =m.m_id and u.u_id=ur.u_id and r.r_id=rm.r_id and ur.r_id = r.r_id and u.u_id=?"; 
    try { 
    pstm = con.prepareStatement(sql); 
    pstm.setString(1,zhid); 
    rs = pstm.executeQuery(); 
    while(rs.next()){ 
    CdzhglForm form = new CdzhglForm(); 
    form.setM_name(rs.getString("m_name")); 
    form.setM_url(rs.getString("m_url")); 
    list.add(form); 

    } catch (SQLException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 

    return list; 
      

  8.   

    list =menu.selectcdb("1000000010001000"); 
    Iterator it = list.iterator(); 
    while(it.hasNext()) 

    form=(CdzhglForm)it.next(); 
    m_names=form.getM_name(); 
    System.out.println(m_names); }