当没有结果时,executeQuery(String sql)会返回什么?

时间:2012-06-13 12:32:50

标签: java sql jdbc

  

可能重复:
  How to check if resultset has one row or more?

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

假设SQL查询是SELECT语句。

7 个答案:

答案 0 :(得分:17)

您是否检查了ResultSet's next method。最初ResultSet的光标指向第一行之前,第一次调用next()返回false意味着ResultSet中没有数据。请参阅How do I get the size of a ResultSet?,因为Java中没有针对Resultsets的直接size()或length()方法。

答案 1 :(得分:4)

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

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

答案 2 :(得分:3)

它将返回一个ResultSet。使用

  

boolean hasResult = rs.next();

查明是否有结果行。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

基本上,通常的程序是行

之类的
ResultSet rs = executeQuery("select ....");
while(rs.next()) {
    //do something with the results
}

答案 5 :(得分:0)

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

答案 6 :(得分:-1)

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

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

Source:

/**
    * 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;