如何获取ResultSet包含的多个行?

时间:2011-10-18 13:55:09

标签: java jdbc resultset

我的查询意味着只返回一行(因为它是一个唯一ID的记录选择)。如果结果集为空,我将抛出异常,如果它包含多于1行,则抛出另一个异常。在这种情况下,使用while(rs.next())迭代结果集看起来并不漂亮,恕我直言。我可以立即获得结果集中的行数吗?

3 个答案:

答案 0 :(得分:3)

rs.first();
if(!rs.isLast())
     throw new Exception(...);

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

答案 1 :(得分:3)

我认为没有办法在单个方法调用中执行此操作。

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

请记住让finally子句关闭所有连接/ ds:)

rs.last();

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

答案 2 :(得分:0)

你试过了吗? 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