Mysql
 sql >> Database >  >> RDS >> Mysql

L'accesso funziona solo per l'ultimo utente nel database

Stai copiando l'intera tabella DB nella memoria di Java e stai facendo il confronto in un while loop su tutti i record. Non stai interrompendo il while loop quando c'è una corrispondenza con un record, quindi continua a scorrere i record rimanenti e quindi il pagename vieni sovrascritto con "start" ogni volta.

Devi aggiungere una break dichiarazione:

if (results.getString(2).equals(password) && results.getString(1).equals(username)) { 
    pagename="main";
    break;
}

O, meglio, lascia che SQL faccia il lavoro per cui è stato progettato, selezionando e restituendo esattamente i dati che ti servono:

preparedStatement = connection.prepareStatement("SELECT id FROM user WHERE username=? AND password=MD5(?)");
preparedStatement.setString(1, username);
preparedStatement.setString(2, password);
resultSet = preparedStatement.executeQuery();

if (resultSet.next()) {
    pagename = "main";
}
else {
    pagename = "start";
}

È più efficiente e sensato.