8

可能重复:
如何检查结果集是否有一行或多行?

executeQuery(String sql)当 SQL Query 的结果为零行> 时会返回什么?如果它返回一个ResultSet对象,我们将如何检测 SQL 查询没有返回任何内容。

假设 SQL 查询是一个SELECT语句。

4

7 回答 7

17

你检查过 ResultSet 的下一个方法吗?最初 ResultSet 的光标指向第一行之前,第一次调用 next() 返回 false 意味着 ResultSet 中没有数据。请参阅如何获取 ResultSet 的大小?,因为 Java 中的结果集没有直接的 size() 或 length() 方法。

于 2012-06-13T12:36:46.200 回答
4

resultSet 的 next() 方法将光标移动到下一行并返回一个布尔值,指示是否已读取数据。通常它与while循环一起使用

while (myresultset.next()){ //some statement; } 在您的情况下,如果没有数据与查询匹配,则 next 方法的第一次调用将返回 false。

于 2012-06-13T12:37:47.973 回答
3

它将返回一个结果集。采用

boolean hasResult = rs.next();

找出是否有结果行。

于 2012-06-13T12:38:05.120 回答
1

零行的空结果集,resultSet.next()即将返回 false。

于 2012-06-13T12:36:52.033 回答
0

如果ResultSet返回为空,则next()在此 ResultSet 上第一次调用方法的输出将返回 false。

基本上,通常的程序是其中的一些东西

ResultSet rs = executeQuery("select ....");
while(rs.next()) {
    //do something with the results
}
于 2012-06-13T12:38:30.313 回答
0

ResultSet如果查询获取 0 条记录,它将返回空。最初游标指向结果集之前,当我们调用resultset.next()游标移动到下一个resultset(迭代器模式)并返回true如果有任何结果存在,否则它只是返回false。在这种情况下,第一次调用next()方法返回false

于 2012-06-13T12:51:23.717 回答
-1

您可以使用该rs.getRow()方法。

 if(rs.getRow() >= 1){
      //Has at least 1 result
    }

来源:

/**
    * Retrieves the current row number.  The first row is number 1, the
    * second number 2, and so on.
    * <p>
    * <strong>Note:</strong>Support for the <code>getRow</code> method
    * is optional for <code>ResultSet</code>s with a result
    * set type of <code>TYPE_FORWARD_ONLY</code>
    *
    * @return the current row number; <code>0</code> if there is no current row
    * @exception SQLException if a database access error occurs
    * or this method is called on a closed result set
    * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
    * this method
    * @since 1.2
 */
      int getRow() throws SQLException;
于 2012-06-13T12:44:13.247 回答