Java 如何获取ResultSet包含的行数?

Java 如何获取ResultSet包含的行数?,java,jdbc,resultset,Java,Jdbc,Resultset,我的查询只返回一行(因为它是通过唯一id选择的记录)。如果结果集为空,我将抛出一个异常;如果结果集包含多行,我将抛出另一个异常。在本例中,使用while(rs.next())迭代结果集看起来不太好,IMHO。我可以立即获得结果集中的行数吗 rs.first(); if(!rs.isLast()) throw new Exception(...); 似乎不需要知道返回的行数,只要行数超过1就行了 似乎您不需要知道返回的行数,只要行数超过1行即可。您是否尝试过: java.sql.Res

我的查询只返回一行(因为它是通过唯一id选择的记录)。如果结果集为空,我将抛出一个异常;如果结果集包含多行,我将抛出另一个异常。在本例中,使用while(rs.next())迭代结果集看起来不太好,IMHO。我可以立即获得结果集中的行数吗

rs.first();
if(!rs.isLast())
     throw new Exception(...);
似乎不需要知道返回的行数,只要行数超过1就行了

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

您是否尝试过: 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
您是否尝试过: 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

我不认为有一种方法可以在单个方法调用中实现这一点

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

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


我不认为有一种方法可以在单个方法调用中实现这一点

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

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


这是我在我的案例中实际使用的。这是我在我的案例中实际使用的。重复。见:重复。见: