【问题标题】:isLast() method for a TYPE_FORWARD_ONLY result setTYPE_FORWARD_ONLY 结果集的 isLast() 方法
【发布时间】:2012-05-15 08:41:25
【问题描述】:

我一直在尝试寻找一种方法来知道我是否在结果集的最后一行,并且我找到了 isLast() 方法。

我做了类似的事情:

if(rs.isLast()) {
    //do some operation here
}

但它给我一个错误:仅转发结果集不支持请求的操作。

我搜索了一个解决方案,它说我应该更改 TYPE_FORDWARD_ONLY。但是现在,我想知道是否有办法通过使用 TYPE_FORWARD_ONLY 来知道我是否在最后一个记录集中?

谢谢。

【问题讨论】:

    标签: java jdbc resultset


    【解决方案1】:

    还有一个方法isAfterLast,您可以在调用next 后检查它。 TYPE_FORDWARD_ONLY 也不需要支持此功能,但您可以尝试一下。

    【讨论】:

    • Oracle 驱动程序 (ojdbc8) 的相同异常
    【解决方案2】:

    您的连接器可能不支持TYPE_FORWARD_ONLY,您可以使用DatabaseMetaData#supportsResultSetType(int) 进行检查。

    【讨论】:

    • 至少需要所有 JDBC 驱动程序来支持 TYPE_FORWARD_ONLY 结果集(第 6.3 节 JDBC 4.1 规范)。 afterLastisLast 等方法不需要为 TYPE_FORWARD_ONLY 实现,而且通常对 TYPE_FORWARD_ONLY 结果集没有真正用处(这就是不需要实现它们的原因)。
    【解决方案3】:

    如果您的驱动程序不支持 afterLastisLast 并且您只能使用 TYPE_FORWARD_ONLY 结果集,那么您将需要处理所有行,然后在完成后对最后一行执行您想要执行的额外操作读取所有行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 2016-03-23
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多