在几次 next() 调用后从 ResultSet 获取 RowCount



我有以下代码:

//rs is a ResultSet from a prepared statement
rs.last();
this.resultCount = rs.getRow();
rs.beforeFirst();

如果我在执行了几个rs.next()后执行该代码,那么rs.beforeFirst()是错误的。

所以我的问题是:我怎样才能回到当前的位置而不是之前的位置第一位置?

问题:">我怎样才能回到当前位置,而不是第一个位置之前的位置。

答:您可以使用resultSet.absolute(rowIndex);


详细说明:
光标移动到此 ResultSet 对象中的给定行号。
如果行号为正数,则游标相对于结果集的开头移动到给定的行号。第一行是第 1 行,第二行是第 2 行,依此类推。

如果给定的行号为负数,则游标将移动到相对于结果集末尾的绝对行位置。例如,调用方法absolute(-1)将光标定位在最后一行;调用该方法absolute(-2)将光标移动到next-to-last行,依此类推。

如果指定的行号为零,则光标将移动到第一行之前。


但是,您可以在程序中使用absolumte(rowIndex),例如:

int currRowIndex = resultSet.getRow();
resultSet.last(); // <- can throw if resultSet type is TYPE_FORWARD_ONLY
this.resultCount = resultSet.getRow();
resultSet.absolute(currRowIndex); // <- It will allow you to set cursor position.

警告:当使用last()时,如果结果集类型为 TYPE_FORWARD_ONLY,则可能会抛出。

last
boolean last() throws SQLException
Moves the cursor to the last row in this ResultSet object.<be>
Returns:
- true if the cursor is on a valid row;
- false if there are no rows in the result set
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
- SQLFeatureNotSupportedException: if the JDBC driver does not support
this method

相关内容

  • 没有找到相关文章

最新更新