对只转发结果集的无效操作: last
在练手时遇到的一个小问题,到处询问和搜索终于找到了我报错的原因。
JAVA代码:
pstmt = sourceConn.prepareStatement(findSql);
pstmt.executeUpdate();
rs = pstmt.executeQuery();
rs.last(); //移到最后一行 出错代码行
int rowCount = rs.getRow(); //得到当前行号,也就是记录数
rs.beforeFirst(); //还要用到记录集,就把指针再移到初始化的位置
出错原因见这里:
因为初学,所以,在建立Statement时使用默认参数。导致在使用执行rs.last()时,产生:
“java.sql.SQLException:对只转发结果集的无效操作:last”的异常。
注:以上报错信息经过翻译
出现异常的语句: rs.last();
解决办法:
pstmt = sourceConn.prepareStatement(findSql);
改为
pstmt = sourceConn.prepareStatement(findSql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
修改后的代码:
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(); //还要用到记录集,就把指针再移到初始化的位置
希望能对你有所帮助