jsp while循环嵌套的问题
Stringsql="select*fromVIEW_DOWNLOAD_OVERSEASROTATIONorderby1";ResultSetrs_bd_psndoc=s...
String sql = "select * from VIEW_DOWNLOAD_OVERSEASROTATION order by 1 ";
ResultSet rs_bd_psndoc = state.executeQuery(sql);
while (rs_bd_psndoc.next())
{
<tr height=25 class="tdbg_4">
<td align=center><%=rs_bd_psndoc.getString("nu")==null?"":rs_bd_psndoc.getString("nu")%></td>
String sql1 = "select * from hi_psndoc_work where hi_psndoc_work.pk_psnbasdoc = '"+pk_psndoc+"' order by begindate";
ResultSet rs_bd_psndoc1 = state.executeQuery(sql1);
while (rs_bd_psndoc1.next())
out.print(rs_bd_psndoc1.getString("简历")+ "<br />" );
}
代码的意思是 while (rs_bd_psndoc.next())里面嵌套一个while (rs_bd_psndoc1.next()),但是只能显示一条数据,在里面的循环结束后没有回到外面的循环,这是什么原因,应该怎么写这个代码??? 展开
ResultSet rs_bd_psndoc = state.executeQuery(sql);
while (rs_bd_psndoc.next())
{
<tr height=25 class="tdbg_4">
<td align=center><%=rs_bd_psndoc.getString("nu")==null?"":rs_bd_psndoc.getString("nu")%></td>
String sql1 = "select * from hi_psndoc_work where hi_psndoc_work.pk_psnbasdoc = '"+pk_psndoc+"' order by begindate";
ResultSet rs_bd_psndoc1 = state.executeQuery(sql1);
while (rs_bd_psndoc1.next())
out.print(rs_bd_psndoc1.getString("简历")+ "<br />" );
}
代码的意思是 while (rs_bd_psndoc.next())里面嵌套一个while (rs_bd_psndoc1.next()),但是只能显示一条数据,在里面的循环结束后没有回到外面的循环,这是什么原因,应该怎么写这个代码??? 展开
2个回答
展开全部
如果是普通的嵌套循环,只要没有出现break;跳出,那么最外层一定也会执行。这个代码rs应该是代表resultset吧,根据描述,每个循环必4次,出现问题可能在于,这些rs都是全局变量。rs3.next(),rs3循环4次结束后rs3的游标已经指向最末,然后循环第二次调用rs2.next(),但是rs3的数已经取完了,跳过,再循环直至rs2循环完开始rs1的循环。由于rs3第一次循环就将内容取完,后面的循环当然什么都取不到。
这种嵌套循环最好拆掉,用别的方案来代替。
这个嵌套就算把rs3在rs2.next()方法里用局部变量生成一个新的,可以保证循环,但是每次大循环完需要执行64次,而且还要每次都移动rs3的游标,每隔4次需要移动rs2的游标,每次16次需要移动rs1游标,这个开销太大了。建议拆掉。
---------------------
ResultSet rs1 = ...;
while(rs1.next()) {
ResultSet rs2 = ...; //
while(rs2.next()) {
ResultSet rs3 = ...; // 在rs2的循环里每次产生一个新的局部的rs3,那么每次rs2或rs1的大循环对于这个新的rs3都会重新把游标从0到length-1移动。
}
}
}
还是建议你采取别的方法把这个循环拆掉。
请采纳。
这种嵌套循环最好拆掉,用别的方案来代替。
这个嵌套就算把rs3在rs2.next()方法里用局部变量生成一个新的,可以保证循环,但是每次大循环完需要执行64次,而且还要每次都移动rs3的游标,每隔4次需要移动rs2的游标,每次16次需要移动rs1游标,这个开销太大了。建议拆掉。
---------------------
ResultSet rs1 = ...;
while(rs1.next()) {
ResultSet rs2 = ...; //
while(rs2.next()) {
ResultSet rs3 = ...; // 在rs2的循环里每次产生一个新的局部的rs3,那么每次rs2或rs1的大循环对于这个新的rs3都会重新把游标从0到length-1移动。
}
}
}
还是建议你采取别的方法把这个循环拆掉。
请采纳。
2014-09-20
展开全部
在java里每个ResultSet结果集都需要一个单独的statement来支撑,如果想使用多个Result就必须使用创建多个statement。在嵌套中尤其如此。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询