2012-06-13 344 views
4

可能重复:
How to check if resultset has one row or more?executeQuery(String sql)在没有结果时返回什么?

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

假定SQL查询是SELECT语句。

+0

你试过吗?应该返回或空结果集 –

+0

@JigarJoshi我们将如何检测到返回的对象包含零行? –

+0

['resultSet.next()'](http://docs.oracle.com/javase/1.4.2/docs/api/java/sql/ResultSet。html#next%28%29)在没有更多数据的情况下返回'false' –

回答

1

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

+0

Java中的Resultset没有size()或length()方法。 – Muse

+0

嗯,我纠正了。 – manurajhada

4

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

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

+0

是不是myresultset.first()和myresultset.next()对第一次调用做同样的工作? –

+0

是的,我想,事件如果取决于实施。试一试。 – jocelyn

2

它将返回一个ResultSet。使用

boolean hasResult = rs.next();

找出是否有结果行。

0

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

基本上一般的程序是线

ResultSet rs = executeQuery("select ...."); 
while(rs.next()) { 
    //do something with the results 
} 
-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; 
0

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