...
rs=statement.executeQuery();
while(rs.next()){
....
}
rs.relative(-1);
System.out.println(rs.getString("id"));
执行 rs.relative(-1);时会抛java.sql.exception 没有当前行要是先执行了rs.previous(); 就不会出错了
我又试了几次发现当指针位置第一行之前和最后一行之后时调用 relative()方法都会出错 
要是指针在Resultset的某一行了再执行relative()就不会出错了, relative()方法不是相对定位吗。。
难道当指针位于表头或表尾时不能用relative()方法吗?哪位朋友能回答下啊??
还有relative()这个方法使用频率高吗?

解决方案 »

  1.   

    boolean relative(int rows)
                     throws SQLException按相对行数(或正或负)移动指针。试图移动到结果集的第一行/最后一行之外,会将指针置于第一行之前或最后一行之后。调用 relative(0) 有效,但是不更改指针位置。 
    注:调用方法 relative(1) 等效于调用方法 next(),而调用方法 relative(-1) 等效于调用方法 previous()。 
    参数:
    rows - 指定从当前行开始移动的行数的 int;正数表示指针向前移动;负数表示指针向后移动 
    返回:
    如果指针位于行上,则返回 true;否则返回 false 
    抛出: 
    SQLException - 如果发生数据库访问错误、不存在当前行或者结果集类型为 TYPE_FORWARD_ONLY
    不存在当前行,调用relative就会出错。
      

  2.   

    relative
    boolean relative(int rows)
                     throws SQLException按相对行数(或正或负)移动指针。试图移动到结果集的第一行/最后一行之外,会将指针置于第一行之前或最后一行之后。调用 relative(0) 有效,但是不更改指针位置。 
    注:调用方法 relative(1) 等效于调用方法 next(),而调用方法 relative(-1) 等效于调用方法 previous()。 
    参数:
    rows - 指定从当前行开始移动的行数的 int;正数表示指针向前移动;负数表示指针向后移动 
    返回:
    如果指针位于行上,则返回 true;否则返回 false 
    抛出: 
    SQLException - 如果发生数据库访问错误、不存在当前行或者结果集类型为 TYPE_FORWARD_ONLY
      

  3.   

    假设现在指针在表的最后一条记录的后面
    relative(-1),是向后跳一行,为什么结果是没有当前行呢 ? ?