2011-08-25 5 views

답변

9

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? 
} 
+0

덕분에 좋은 것입니다. 그것은 효과가 있었다. –

+0

반갑습니다. JDBC 자료를 올바르게 사용하는 방법에 대한 힌트를 얻으시기 바랍니다. – BalusC

관련 문제