日期:2014-05-17  浏览次数:20696 次

JSP从数据库中取数据,结果取出来的都是最后一条的重复数据,这是怎么回事
我在JSP上写了下面这些代码从数据库中取出数据并显示,可是结果是,假如我数据库中有50条信息,它给我显示出来的50条信息都是重复最后一条数据的,下面这个代码应该怎么改写呢,我看不大懂for循环是做什么的,麻烦帮我解释下呀





<% List<ReportProcess> rp=new ArrayList<ReportProcess>();
ReportProcess rps=new ReportProcess();
String id=(String)session.getAttribute("id");
ResultSet rs=null;
Connection con=null;
DBConnection dbcon=new DBConnection();
try{
con=dbcon.getConnection();
dbcon.setSql("rprocess");
prst=con.prepareStatement(dbcon.getSql());
prst.setString(1,id);
rs=prst.executeQuery();
while(rs.next()){
rps.initFormRs(rs);
rp.add(rps);
}
}
catch (SQLException e)
{}finally{
dbcon.closedb(rs,con);
}
for(Iterator<ReportProcess> it = rp.iterator();it.hasNext(); ){
rps = it.next();
%>
<tr>
<td><input type="text" name="xuehao" value="<%=rps.getId()%>"></td>
<td><input type="text" name="riqi" value="<%=rps.getRdate()%>"></td>
<td><input type="text" name="xuesheng" value="<%=rps.getSname()%>"></td>
<th><input type="text" name="jiaoshi" value="<%=rps.getTname()%>"></td>
<td><input type="text" name="jidu" size=100 value="<%=rps.getPosition()%>"></td>
</tr>
<%
}%>

------解决方案--------------------
rps.initFormRs(rs); 和 sql 发出来看看

------解决方案--------------------
for(ReportProcess r:rp){
r = it.next();
%>
<tr>
<td><input type="text" name="xuehao" value="<%=r.getId()%>"></td>
<td><input type="text" name="riqi" value="<%=r.getRdate()%>"></td>
<td><input type="text" name="xuesheng" value="<%=r.getSname()%>"></td>
<th><input type="text" name="jiaoshi" value="<%=r.getTname()%>"></td>
<td><input type="text" name="jidu" size=100 value="<%=r.getPosition()%>"></td>
</tr>
<%
}%> 

你把你的for循环换成这个看行不行。
------解决方案--------------------
你的rps实例在while(rs.next())循环外面也就是说只会rps所引用的实例只会是最后一个。
建议:
while(rs.next()){
ReportProcess rps=new ReportProcess();
rps.initFormRs(rs);
rp.add(rps);
}