私のコードには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++;
}
これを使って:
resultSet.beforeFirst()
ドキュメントから:
スロー:SQLException-データベースアクセスエラーが発生した場合。このメソッドは、閉じた結果セットで呼び出されるか、結果セットのタイプがTYPE_FORWARD_ONLYです
これがあなたが探しているものです:
rm.beforeFirst()
公式ドキュメント :
カーソルをこのResultSetオブジェクトの前、最初の行の直前に移動します。結果セットに行が含まれていない場合、このメソッドは効果がありません。