在几次 next() 调用后从 ResultSet 获取 RowCount
Get RowCount from a ResultSet after a few next() calls
我有以下代码:
//rs is a ResultSet from a prepared statement
rs.last();
this.resultCount = rs.getRow();
rs.beforeFirst();
如果我在执行了一些 rs.next()
之后执行该代码,那么 rs.beforeFirst()
是错误的。
所以我的问题是:我怎样才能回到当前位置而不是 beforeFirst 位置?
问题: "how can I get back to the current position and not to the before the first position."
答案:可以使用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()
如果 resultSet 类型是 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
我有以下代码:
//rs is a ResultSet from a prepared statement
rs.last();
this.resultCount = rs.getRow();
rs.beforeFirst();
如果我在执行了一些 rs.next()
之后执行该代码,那么 rs.beforeFirst()
是错误的。
所以我的问题是:我怎样才能回到当前位置而不是 beforeFirst 位置?
问题: "how can I get back to the current position and not to the before the first position."
答案:可以使用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()
如果 resultSet 类型是 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