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();//また、レコードセットを使用すると、ポインタを初期化の位置に移動します.
エラーの原因はここにあります.
修正後のコード:
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();//また、レコードセットを使用すると、ポインタを初期化の位置に移動します.
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();//また、レコードセットを使用すると、ポインタを初期化の位置に移動します.