Verificación de login/contraseña en Java

Resuelto
ilhem.s Mensajes publicados 34 Estado Miembro -  
tarik45 Mensajes publicados 2 Estado Miembro -
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. malaik5 Mensajes publicados 259 Fecha de registro   Estado Miembro Última intervención   33
     
    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. malaik5 Mensajes publicados 259 Fecha de registro   Estado Miembro Última intervención   33
       
      para la excepción no sé por qué por el momento
      0
    2. ilhem.s Mensajes publicados 34 Estado Miembro 1
       
      ¿Cva c b1 funcionó
      Gracias de verdad, me ayudaste muchísimo>
      0