Code du bouton connexion

cs_Alizzy Messages postés 17 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 28 août 2012 - 31 mai 2010 à 04:21
cs_Alizzy Messages postés 17 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 28 août 2012 - 31 mai 2010 à 22:22
Salut à tous,
je suis sur un projet dans lequel je code un bouton "connexion" d'un formulaire pour l'authentification des utilisateurs.j'ai fait la connexion avec la base de données mais je comprends pas pourquoi mon code ne s'exécute pas normalement c'est-à-dire que pour un mot de passe et un login corrects ou incorrects, il affiche un message d'erreur de saisie des informations qui n'est valable que pour un mot de passe et un login incorrects. je suis pourtant sûre que mon code est bon car j'ai fouillé déjà dans les forums mais je comprends pas où se trouve le problème. S'il vous plaît, veuillez jeter un coup d'oeil dans ce code et merci bien:

private void jBConexionActionPerformed(java.awt.event.ActionEvent evt) {
//chargement du driver
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
}
catch(Exception e){System.out.println("Erreur driver: "+e.getMessage());}
//Connexion à la base
try {
con=DriverManager.getConnection("jdbc:mysql://localhost/licence","root","");
}
catch (SQLException e) {
System.out.println("Impossible de se connecter à la BD");}
try {
st=con.createStatement();
}
catch(SQLException e)
{
System.out.println("Impossible de créer de Statement");
}

String nom=jTextNom2.getText();
char[] mdp=jPwd2.getPassword();
String mot=mdp.toString();

if(nom.equals("")||mot.equals(""))
{JOptionPane.showMessageDialog(this,"renseignez les champs vides","msg d'erreur",JOptionPane.INFORMATION_MESSAGE, null);}
else
{
try {
rs=st.executeQuery("select * from secretariat");
} catch (SQLException ex) {
Logger.getLogger(Form.class.getName()).log(Level.SEVERE, null, ex);
}
try {
while(rs.next())
{
String nm=rs.getString("Login");
String m=rs.getString("Mot de passe");
if(nom!=(nm)&& (mot!=(m))){
JOptionPane.showMessageDialog(this,"un champ est erroné","msg d'erreur",JOptionPane.INFORMATION_MESSAGE, null);
}
else{
this.dispose();
new FormS1().setVisible(true);

}
}
st.close();
rs.close();
con.close();
}
catch(Exception e){System.out.println("error requète: "+e.getMessage());}
}


}

2 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
31 mai 2010 à 07:46
Salut,

je suis pourtant sûre que mon code est bon


Si ton code ne fait pas ce qu'il est censé faire, c'est qu'il n'est pas bon, que tu en sois sûre ou non...

Plusieurs remarques :
1/ Pourquoi tu récupère TOUT les champs de tout les enregistrements de ta table si ce n'est que pour tester 2 champs pour 1 enregistrement ? C'est pas du tout optimisé ta requête. Imagine que tu ai 100 champs avec 1 million d'enregistrements... Tu devra lire toutes ces données juste pour tester si l'utilisateur toto est bien dans tout cà...
N'oublie pas de nommer les champs dont tu as besoin dans tes requêtes (oublies le SELECT *), et utilises la clause WHERE pour ne renvoyer que le strict minimum :
rs=st.executeQuery("select Login, [Mot de pase] from secretariat WHERE Login = '" + nom + "'");

2/ Ce n'est pas comme cà qu'on compare des chaines de caractères en java, il vient de là ton problème :
Remplace ton if(nom!=(nm)&& (mot!=(m))) par : if(!nom.equals(nm) && !mot.equals(m)))
Le pire, c'est que tu l'avais déjà fait pour comparer avec une chaîne vide !
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
cs_Alizzy Messages postés 17 Date d'inscription lundi 26 avril 2010 Statut Membre Dernière intervention 28 août 2012
31 mai 2010 à 22:22
Bonjour Darksidious,
je te remercie pour les informations fournies et je prends note des remarques.
En effet, j'ai testé le nouveau code mais toujours rien. j'ai donc utilisé une autre base de données que j'avais dejà créer et c'est passé.
J'en conclus qu'il y a une erreur avec la base à utiliser. je vais la recréer et voir ce que ça donne.

Merci de m'avoir répondu. Bonne fin de semaine à vous.
0
Rejoignez-nous