absolute(int row)
Java Doc说:
将光标移动到此 ResultSet 对象中的给定行号。如果行号为正,则游标移动到相对于结果集开头的给定行号。第一行是第 1 行,第二行是第 2 行,以此类推。
如果给定的行号为负数,则光标将移动到相对于结果集末尾的绝对行位置。例如,调用方法 absolute(-1) 将光标定位在最后一行;调用方法 absolute(-2) 将光标移动到倒数第二行,依此类推。
如果指定的行号为零,则光标移动到第一行之前。
尝试将游标定位到结果集中的第一行/最后一行之外,会使游标在第一行之前或最后一行之后。
注意:调用 absolute(1) 与调用 first() 相同。调用 absolute(-1) 与调用 last() 相同。
当传递0
给absolute(int row)
方法时,应该表现为beforeFirst()
将光标定位在第一行之前。
但是使用 Jaybird 我有这个异常:
Exception in thread "main" org.firebirdsql.jdbc.FBSQLException: You cannot position to the row 0 with absolute() method.
at org.firebirdsql.jdbc.FBCachedFetcher.absolute(FBCachedFetcher.java:243)
at org.firebirdsql.jdbc.FBCachedFetcher.absolute(FBCachedFetcher.java:232)
at org.firebirdsql.jdbc.AbstractResultSet.absolute(AbstractResultSet.java:1371)
at chapterA.ResultSets.main(ResultSets.java:180)
在 Jaybird 源码上搜索(FBCachedFetcher.java)
我发现当 row 参数为 0 时,它会抛出一个异常:
private boolean absolute(int row, boolean internal) throws SQLException {
checkScrollable();
if (row < 0) {
row = rows.size() + row + 1;
}
if (row == 0 && !internal) {
throw new SQLException("You cannot position to row 0 with absolute() method.");
}
有任何理由这样做吗?
提前致谢!