Java 如何在通过while循环后将结果集重置为第一行

Java 如何在通过while循环后将结果集重置为第一行,java,resultset,Java,Resultset,我的代码有两个循环,对于第一行外循环,我的外循环应该循环通过内循环的所有行,对于第二行外循环,它应该循环通过内行的所有行 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.add

我的代码有两个循环,对于第一行外循环,我的外循环应该循环通过内循环的所有行,对于第二行外循环,它应该循环通过内行的所有行

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

}

以下是您要查找的内容:

rm.beforeFirst()
:

将光标移到此ResultSet对象的前面,就在第一行之前。如果结果集不包含行,则此方法无效

使用以下命令:

resultSet.beforeFirst()
从文档:

抛出: SQLException-如果发生数据库访问错误;这种方法是可行的 对关闭的结果集调用或结果集类型为 仅键入_FORWARD

使用

但您必须以这种方式创建语句:

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

因此,它是可遍历的,而不仅仅是一个方向。

谢谢,但我尝试此操作时遇到以下错误。2015年8月7日上午10:00:40 tsidb.SalesUI AnualSalesCustButtonActionPerformed Severy:null java.sql.SQLException:不正确的光标类型在执行
beforeFirst()之后如何获取数据
您需要使用
.next()
否则请使用
.first()
方法。我正在使用rs.next()获取数据。这是我的内部循环的while条件。您是否在
rs
rm
上使用
beforeFirst()
?可能是也可能不是:我收到以下错误,2007年8月,2015年10:00:40 AM tsidb.SalesUI AnuAlSalesCustButtonActionPerformed Severy:null java.sql.SQLException:不正确的光标类型是否需要设置FetchDirection?我可能需要设置结果集的方向。并将其设置为第一行?我不明白您的要求。我想重置结果集,以便它从第一行重新开始内部循环。
Statement stmt = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);