在JDBC中判断ResultSet是否为空有几种常见方法方法1使用 next() 方法最常用Statementstmtnull;ResultSetrsnull;try{stmtconnection.createStatement();rsstmt.executeQuery(SELECT * FROM users);// 判断ResultSet是否为空if(!rs.next()){System.out.println(ResultSet为空没有数据);}else{// 有数据处理第一条记录do{// 处理数据Stringnamers.getString(name);System.out.println(name);}while(rs.next());}}catch(SQLExceptione){e.printStackTrace();}finally{// 关闭资源try{if(rs!null)rs.close();}catch(SQLExceptione){}try{if(stmt!null)stmt.close();}catch(SQLExceptione){}}方法2使用 isBeforeFirst() 方法if(!rs.isBeforeFirst()){System.out.println(ResultSet为空没有数据);}else{while(rs.next()){// 处理数据Stringnamers.getString(name);System.out.println(name);}}方法3获取元数据判断行数// 这种方法需要滚动敏感的ResultSetStatementstmtconnection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);ResultSetrsstmt.executeQuery(SELECT * FROM users);// 移动到末尾获取行数rs.last();introwCountrs.getRow();if(rowCount0){System.out.println(ResultSet为空没有数据);}else{// 移动回开头处理数据rs.beforeFirst();while(rs.next()){Stringnamers.getString(name);System.out.println(name);}}方法4封装成工具方法publicstaticbooleanisResultSetEmpty(ResultSetrs)throwsSQLException{return!rs.isBeforeFirst();}// 使用示例if(isResultSetEmpty(rs)){System.out.println(ResultSet为空);}else{while(rs.next()){// 处理数据}}注意事项next()方法会移动游标使用后会指向第一条记录isBeforeFirst()不会移动游标只判断当前位置是否在第一条记录之前数据库驱动兼容性某些老版本驱动可能不支持isBeforeFirst()资源释放使用后记得关闭ResultSet、Statement和Connection推荐使用对于大多数情况推荐使用方法2isBeforeFirst()因为它不会移动游标位置代码更清晰ResultSetrsstatement.executeQuery(sql);if(!rs.isBeforeFirst()){// 没有数据return;}// 有数据正常处理while(rs.next()){// 处理数据}