web-dev-qa-db-ja.com

whileループをループした後、結果セットを最初の行にリセットする方法

私のコードには2つのループがあり、外側のループは外側のループの最初の行の内側のループのすべての行をループし、外側のループの2番目の行の場合は内側の行のすべての行をループする必要があります。

int y1,y2;
float t = 0,s1,s2;

while(rm.next())
{
    int currentCol = 0;

    cellNumber = new jxl.write.Number (currentCol++, currentRow, index, integerFormat);
    index++;
    sheet.addCell ( cellNumber );

    cellLabel = new Label(currentCol++, currentRow, rs.getString("Name"));
    sheet.addCell ( cellLabel );


    y1 = rm.getInt("Year");

    System.out.println("Year 1: " +y1);


    cellNumber = new jxl.write.Number (currentCol++, currentRow, y1 , integerFormat);
    sheet.addCell ( cellNumber );



    s1 = rm.getFloat("Total_Price");
    System.out.println("S1: "+s1);

    while (rs.next())
    {
        y2 = rs.getInt("Year");
        System.out.println("Year 2: " +y2);

        s2 = rs.getFloat("Total_Price");
        System.out.println("S2: " +s2);

        if(y1==y2)
        {
            t = s1+s2;    
            System.out.println("Toatl Sales:" +t);

            cellNumber = new jxl.write.Number (currentCol++, currentRow, t , priceformat);
            sheet.addCell ( cellNumber );

        }


    } 
    int a = rs.getFetchDirection();
    System.out.println("Direction: " +a);

    rs.setFetchDirection(ResultSet.FETCH_REVERSE);


    cellNumber = new jxl.write.Number (currentCol++, currentRow, s1 , priceformat);
    sheet.addCell ( cellNumber );




    currentRow++;

}
8
Anusha

これを使って:

resultSet.beforeFirst()

ドキュメントから:

スロー:SQLException-データベースアクセスエラーが発生した場合。このメソッドは、閉じた結果セットで呼び出されるか、結果セットのタイプがTYPE_FORWARD_ONLYです

10
ka4eli

これがあなたが探しているものです:

rm.beforeFirst()

公式ドキュメント

カーソルをこのResultSetオブジェクトの前、最初の行の直前に移動します。結果セットに行が含まれていない場合、このメソッドは効果がありません。

1
cbender