为什么ResultSet 的类型为forward时,其 absolute 操作不能使用?

pinetreexia 2007-07-24 04:29:06
ibatis中有一个处理分页的方法,为什么当ResultSet为TYPE_FORWARD_ONLY 时不能直接用absolute? na


private void handleResults(RequestScope request, ResultSet rs, int skipResults, int maxResults, RowHandlerCallback callback) throws SQLException {
try {
request.setResultSet(rs);
ResultMap resultMap = request.getResultMap();
if (resultMap != null) {
// Skip Results
if (rs.getType() != ResultSet.TYPE_FORWARD_ONLY) {
if (skipResults > 0) {
rs.absolute(skipResults);
}
} else {
for (int i = 0; i < skipResults; i++) {
if (!rs.next()) {
return;
}
}
}

// Get Results
int resultsFetched = 0;
while ((maxResults == SqlExecutor.NO_MAXIMUM_RESULTS || resultsFetched < maxResults) && rs.next()) {
Object[] columnValues = resultMap.resolveSubMap(request, rs).getResults(request, rs);
callback.handleResultObject(request, columnValues, rs);
resultsFetched++;
}
}
} finally {
request.setResultSet(null);
}
}
...全文
227 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sylven 2007-07-29
  • 打赏
  • 举报
回复
absolute()方法可以定位到任何一行。

为什么不行呢?
看例子:
当前在第20行,如果你 rs.absolute(10);那么就是倒退10行了,这样的话还是FORWARD ONLY吗?

既然确定了是TYPE_FORWARD_ONLY,就只能rs.next();
joejoe1991 2007-07-25
  • 打赏
  • 举报
回复
TYPE_FORWARD_ONLY 代表游标只能向前移动 。。。 所以不能用absolute()方法来随便移动游标
pinetreexia 2007-07-25
  • 打赏
  • 举报
回复
我是想知道用TYPE_FORWARD_ONLY,为什么resultset不能用absolute()方法,.而其他类型的就可以用absolute这个方法定位呢?
pinetreexia 2007-07-25
  • 打赏
  • 举报
回复
楼上的。你这样说,有根据吗?
flamencoxu 2007-07-25
  • 打赏
  • 举报
回复
没原因,就是不行

用absolute方法时,游标必须回到起始位置再移动
你都FORWARD ONLY了,游标怎么回起始位置?
rock406 2007-07-24
  • 打赏
  • 举报
回复
TYPE_FORWARD_ONLY
该常量指示指针只能向前移动的 ResultSet 对象的类型。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧