的java嵌套while循环中的结果集(java nested while loop in resu

2019-10-19 11:58发布

我要合并2的resultSet这是从SQL查询返回的结果的结果。 什么是实现这一目标的最佳方式是什么?

我的计划是截枝在2结果集,以从两个结果集打印出最终结果。 两个结果都设置有相同的ID列这是他们第一列。 但对于内部while循环,我只得到了第一个值打印出来。

我想,当有匹配,它打印从第二个结果集的值,并打破循环。 然后,当有另一场比赛中,再次打印出值。

while (set1.next())
{
    System.out.print("Id: "+set1.getInt(1)+", Name: "+set1.getString(2));

    while (set2.next())
    {
        if (set1.getInt(1)==(set2.getInt(1)))
        {  
            System.out.print(", Alias: "+set2.getString(2);
            break;
        }
    }

    System.out.println();
}

编辑:

ResultSet set1: 
id | name
1  | A
2  | B
3  | C
...

ResultSet set2:
id | alias
1  | F
2  | G
2  | H

我想打印出来:

Id: 1, Name: A, Alias: F
Id: 2, Name: B, Alias: G, H

仅供参考,该ID在两套订单上升

Answer 1:

由于这两个结果集具有相同的第一列(ID),你可以从第一行两个结果集开始。 在内部循环,遍历排在SET2,直到其ID比设置1的ID大。 所以,你可以这样做:

while (set1.next())
{
    System.out.print("Id: "+set1.getInt(1)+", Name: "+set1.getString(2));

    while (set2.next())
    {
        System.out.print(", Alias:");
        if (set1.getInt(1)==(set2.getInt(1)))
        {  
            System.out.print(set2.getString(2) + ", ");
            continue;
        } else {
            set2.previous();
            break;
        }
    }
    System.out.println();
}


Answer 2:

下面的循环将仅针对外部循环执行一次

        while (set2.next()){
            if (set1.getInt(1)==(set2.getInt(1))){  
                System.out.print(", Alias: "+set2.getString(2);
                break;
            }
        }

您需要在每次外循环执行的时间来重新初始化迭代器。



文章来源: java nested while loop in result set