java.sql.SQLException:結果セットのみを転送する無効な操作:last


java.sql.SQLException:結果セットのみを転送する無効な操作:last
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at oracle.jdbc.driver.BaseResultSet.last(BaseResultSet.java:81)
at com.ambow.upgrade.comm.UpGradeService.deleteOpr(UpGradeService.java:568)
at com.ambow.upgrade.comm.UpGradeService.loadData(UpGradeService.java:126)
at com.ambow.upgrade.comm.UpGradeService.exeUpgrade(UpGradeService.java:519)
at com.ambow.upgrade.comm.UpGradeService.main(UpGradeService.java:528)
JAVAコード:
pstmt = sourceConn.prepareStatement(findSql);
pstmt.executeUpdate();
rs = pstmt.executeQuery();
rs.last();//最後の行に移動
エラーコード行
int rowCount = rs.getRow();//現在の行番号、つまりレコード数を取得
rs.beforeFirst();//また、レコードセットを使用すると、ポインタを初期化の位置に移動します.
エラーの原因はここにあります.

http://www.cnblogs.com/mingal/archive/2007/03/07/666373.html

    ,  ,   Statement       。       rs.last() ,  “java.sql.SQLException:            :last”   。
     Statement       ,      。
               
 
       : rs.last();
 
       :            : last
 
    :  stat = conn.createStatement();
            stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);     
 
  :               ,      statement            
                ,statement             ResultSet.TYPE_FORWARD_ONLY.            rs.next();      ,           .                              
            :
ResultSet.TYPE_FORWARD_ONLY   ( )
ResultSet.TYPE_SCROLL_INSENSITIVE      ,      ,              ,   ResultSet     。
ResultSet.TYPE_SCROLL_SENSITIVE      ,            ,    ResultSet    。
ResultSet.CONCUR_READ_ONLY     ResultSet
ResultSet.CONCUR_UPDATABLE   ResultSet     

修正後のコード:
pstmt = sourceConn.prepareStatement(findSql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
pstmt.executeUpdate();
rs = pstmt.executeQuery();
rs.last();//最後の行に移動
int rowCount = rs.getRow();//現在の行番号、つまりレコード数を取得
rs.beforeFirst();//また、レコードセットを使用すると、ポインタを初期化の位置に移動します.