如何从MySQL中检测空ResultSet?

如果没有可能的结果,如何检测从MySQL发送的空结果集。

只需检查ResultSet#next()返回true。 例如

 public boolean exist(String username, String password) throws SQLException { Connection connection = null; PreparedStatement statement = null; ResultSet resultSet = null; boolean exist = false; try { connection = database.getConnection(); statement = connection.prepareStatement("SELECT id FROM user WHERE username = ? AND password = MD5(?)"); statement.setString(1, username); statement.setString(2, password); resultSet = statement.executeQuery(); exist = resultSet.next(); } finally { close(resultSet, statement, connection); } return exist; } 

您可以使用如下

 if (userDAO.exist(username, password)) { // Proceed with login? } else { // Show error? } 

或者,您也可以让它返回一个fullworhy User ,如果没有,则返回null 。 例如

 public User find(String username, String password) throws SQLException { Connection connection = null; PreparedStatement statement = null; ResultSet resultSet = null; User user = null; try { connection = database.getConnection(); statement = connection.prepareStatement("SELECT id, username, email, dateOfBirth FROM user WHERE username = ? AND password = MD5(?)"); statement.setString(1, username); statement.setString(2, password); resultSet = statement.executeQuery(); if (resultSet.next()) { user = new User( resultSet.getLong("id"), resultSet.getString("username"), resultSet.getString("email"), resultSet.getDate("dateOfBirth")); } } finally { close(resultSet, statement, connection); } return user; } 

 User user = userDAO.find(username, password); if (user != null) { // Proceed with login? } else { // Show error? }