13

My code has two loops, my outer loop should loop through all the rows of the inner loop for the first row of outer loop, and the for the second row of the outer loop, it should loop through all the rows of the inner row.

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++;

}
seenukarthi
  • 8,241
  • 10
  • 47
  • 68
Anusha
  • 131
  • 1
  • 1
  • 4

3 Answers3

19

Use this:

resultSet.beforeFirst()

From docs:

Throws: SQLException - if a database access error occurs; this method is called on a closed result set or the result set type is TYPE_FORWARD_ONLY

ka4eli
  • 5,294
  • 3
  • 23
  • 43
2

Use

resultSet.beforeFirst();

But you have to create the Statement this way:

Statement stmt = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

So that it is traversable and not one direction only.

Renis1235
  • 4,116
  • 3
  • 15
  • 27
1

Here's what you're looking for:

rm.beforeFirst()

Official documentation:

Moves the cursor to the front of this ResultSet object, just before the first row. This method has no effect if the result set contains no rows.

cbender
  • 2,231
  • 1
  • 14
  • 18