从数据库里取出值来放到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
高手们,这是怎么弄的,能教教小弟吗?
然后循环取出来。怎么取打印出来的,值总是把最后的一条记录打印好几遍那?|
下面是代码、。 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
高手们,这是怎么弄的,能教教小弟吗?
楼主【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 %
敬礼!
这句话是取值的么?selectcdb()这个方法怎么写的?
debug看看
怀疑list里每一个元素均为同一个CdzhglForm对象的引用,请仔细查selectcdb方法!
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;
}
这是那个方法了,我不知道哪有问题啊~
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;
}
原来是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;
}
Iterator it = list.iterator();
while(it.hasNext())
{
form=(CdzhglForm)it.next();
m_names=form.getM_name();
System.out.println(m_names); }