可能重复:
如何检查是否有结果集的一行或更多?
什么会executeQuery(String sql)
当SQL查询的结果是返回零行>? 如果返回ResultSet
对象,我们将如何检测SQL查询无关返回。
假设SQL查询是一个SELECT
语句。
可能重复:
如何检查是否有结果集的一行或更多?
什么会executeQuery(String sql)
当SQL查询的结果是返回零行>? 如果返回ResultSet
对象,我们将如何检测SQL查询无关返回。
假设SQL查询是一个SELECT
语句。
你检查ResultSet的下一个方法 。 最初,ResultSet的光标指向第一行之前,到旁边的第一个()的调用返回false表示有在ResultSet中没有数据。 见我如何获得一个结果集的大小? 中,由于有在Java结果集没有直接的尺寸()或长度()方法。
结果集的next()方法将光标移动到下一行并返回一个布尔值指示是否一个数据已被读出或没有。 通常它与while循环使用
while (myresultset.next()){ //some statement; }
while (myresultset.next()){ //some statement; }
在你的情况下,如果没有数据matche查询下一个方法的调用拳将返回false。
它会返回一个结果集。 使用
布尔hasResult = rs.next();
以找出是否有一个结果行。
与零行空结果即resultSet.next()
将返回false。
如果ResultSet
返回的是空的,那么在第一次调用的输出next()
方法在这个ResultSet将返回false。
基本上通常的程序是线中的东西
ResultSet rs = executeQuery("select ....");
while(rs.next()) {
//do something with the results
}
它将返回空ResultSet
如果查询取0的记录。 最初,光标点之前的结果集,当过我们调用resultset.next()
光标移动到下一个resultset
(迭代器图案),并返回true
如果有任何结果存在,否则直接返回false
。 在这种情况下,以第一次调用next()
方法返回false
。
您可以使用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;