Verificación de login/contraseña en Java
Resuelto
ilhem.s
Mensajes publicados
34
Estado
Miembro
-
tarik45 Mensajes publicados 2 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);}
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);}
Enlaces relacionados:
- La ventana de Outlook "se requiere una contraseña" aparece constantemente
- ¿Cómo recibir mi código de seguridad de Snap en mi nuevo número?
- Cómo recuperar su cuenta de Snapchat sin correo y sin número.
- Más conexión con freewifi secure
- Solución para recuperar tu cuenta de Snapchat
- Recuperar cuenta de Instagram sin número con la autenticación de dos factores
5 respuestas
-
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