jsp中while的嵌套输出数据被覆盖

来源:百度知道 编辑:UC知道 时间:2024/06/17 05:04:53
我在netbeans中编程时,遇到这样一个问题,我编了一个嵌套循环
……
while(rs1.next()){
……
while(rs2.next()){
……
while(rs3.next()){
……
}
}
}
我的目的是,假设rs1,rs2,rs3都有四个值,每一层循环都要运行四次。可是现在除了rs3运行四次,rs1和rs2都只运行一次。等于得到rs2的值时,它把rs1的值覆盖了。rs3对rs2也是同样。这个问题要怎么解决,请各位高手指点一下
我想要的就是那种第一层循环四次,第二次循环16次,第三次循环64的结果,是太浪费资源了,但没办法
所以怎么把rs3定义成局部变量,我已经把它的定义放在while里了啊

如果是普通的嵌套循环,只要没有出现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移动。
}
}
}
还是建议你采取别的方法把这个循环拆掉。

你的循环语句写错了,
注意格式问题,我现在分析给你看:

while(rs1.next())
{
……
while(rs2.next())
{
……
while(rs3.next())
{
……
}
}
}
按照你给的条件,rs1,rs2,rs3每个都有四个值,
这样子的话结果就是:
rs1执行一次之后就是rs2执行一次,
接着就是rs3执行四次,最后因为rs3的