【问题标题】:How to get a number of rows a ResultSet contains?如何获取 ResultSet 包含的行数?
【发布时间】:2011-10-18 13:55:09
【问题描述】:

我的一个查询是为了准确返回一行(因为它是通过唯一 id 选择的记录)。如果结果集为空,我将抛出一个异常,如果它包含超过 1 行,我将抛出另一个异常。在这种情况下,使用 while(rs.next()) 遍历结果集看起来并不漂亮,恕我直言。我可以立即获取结果集中的行数吗?

【问题讨论】:

标签: java jdbc resultset


【解决方案1】:

我认为没有办法在单个方法调用中做到这一点。

您可以使用 ResultSet 的 last() 方法,然后调用 ResultSet 的 getRow() 方法,这将为您提供 ResultSet 大小并根据大小在需要时抛出异常。

请记得有 finally 子句来关闭所有连接/ds :)

rs.last();

if(rs.getRow() > 1) {
throw (...);
}

【讨论】:

    【解决方案2】:
    rs.first();
    if(!rs.isLast())
         throw new Exception(...);
    

    似乎你不需要知道返回的行数,只要超过 1 行。

    【讨论】:

    • 这实际上是我在我的案例中使用的。
    【解决方案3】:

    您是否尝试过: java.sql.ResultSet.isBeforeFirst()

    来自 javadoc: 检索游标是否在此 ResultSet 对象的第一行之前。

    Note:Support for the isBeforeFirst method is optional for ResultSets with a result set type of TYPE_FORWARD_ONLY
    
    Returns:
        true if the cursor is before the first row; false if the cursor is at any other position or the result set contains no ro
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      • 1970-01-01
      • 2018-07-19
      • 2011-12-14
      • 2018-06-11
      • 1970-01-01
      相关资源
      最近更新 更多