Verificación de login/contraseña en Java

Resuelto
Hola,
estoy tratando de establecer una página de autenticación pero se produce una excepción durante la ejecución, la siguiente:

java.sql.SQLException: Operation not allowed after ResultSet closed

A continuación, una parte del código relacionada con el botón de inicio de sesión

try{

Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url,log ,password);
Statement S=con.createStatement();

ResultSet resultaltLogin=S.executeQuery("Select login from user;");
while(resultaltLogin.next())
{
String LoginRecup=resultaltLogin.getString("login");
if (login.equals(LoginRecup))
{

ResultSet res=S.executeQuery("Select mot_de_passe from user where login='LoginRecup';");
while(res.next())
{
String MPRecup=res.getString("mot_de_passe");
if(MPRecup.equals(MP))
{
verif=true;
Accueil A=new Accueil();
A.show(true);
dispose();
}
}
}
}
if(!verif)
{
JOptionPane.showMessageDialog(null, "Verifier Login / Mot de passe", "Message d'erreur:", JOptionPane.ERROR_MESSAGE);
T1.setText("");
PF.setText("");
}
con.close();

} catch(Exception a){System.out.println(a);}

5 respuestas

  1. hola,
    solo una pequeña observación,
    desde el punto de vista de optimización puedes evitar hacer dos consultas (la primera para recuperar el login y la segunda para recuperar la contraseña) porque haces dos veces la conexión a tu base y ejecutas dos consultas, así que puede ralentizar tu ejecución, sobre todo si ves que las dos consultas apuntan a la misma tabla !! (esto son solo recomendaciones, no impide que tu código siga siendo correcto), y para hacerlo haces un select * from user después comparas los pares usuario, contraseña con lo que el usuario escribe.

    ResultSet resultaltLogin=S.executeQuery("Select * from user;");
    while(resultaltLogin.next())
    {
    String LoginRecup=resultaltLogin.getString("login");
    String MPRecup=resultaltLogin.getString("mot_de_passe ");
    if (login.equals(LoginRecup) && MPRecup.equals(MP))
    {
    ...... // tu tratamiento aquí
    }

    intenta corregir así ya puede que resulte en algo
    6
    1. para la excepción no sé por qué por el momento
      0
    2. ¿Cva c b1 funcionó
      Gracias de verdad, me ayudaste muchísimo>
      0