Authentification en Java/mysql
aliouneman2
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour ,
Je suis entrain de faire une interface graphique pour une authentification login/password mais mon code ne présente pas d'erreur et j'arrive pas à voir le résultat souhaité c'est à dire CONNEXIOIN REUSSIE...
Voici mes codes:
Classe Auhentification :
Classe Base :
Classe TraitementAuthentification :
Je suis entrain de faire une interface graphique pour une authentification login/password mais mon code ne présente pas d'erreur et j'arrive pas à voir le résultat souhaité c'est à dire CONNEXIOIN REUSSIE...
Voici mes codes:
Classe Auhentification :
public class Authentification extends JFrame {
JLabel login,mdp;
JTextField login1;
JPasswordField mdp1;
JButton valider,annuler;
public Authentification(){
super();
this.setTitle(" GESCOM ");
this.setSize(new Dimension(400,200));
this.setLocationRelativeTo(null);
this.setResizable(false);
login = new JLabel("Login");
login1 = new JTextField();
mdp = new JLabel("Mot de Passe");
mdp1 = new JPasswordField();
valider = new JButton("Valider ");
annuler = new JButton(" Annuler");
Container contenu = this.getContentPane();
contenu.setLayout(null);
contenu.add(login);
login.setBounds(20, 20, 100, 20);
contenu.add(login1);
login1.setBounds(150, 20, 150, 20);
contenu.add(mdp);
mdp.setBounds(22, 55, 100, 20);
contenu.add(mdp1);
mdp1.setBounds(150, 55, 150, 20);
contenu.add(valider);
valider.setBounds(125,100 ,77 ,20 );
contenu.add(annuler);
annuler.setBounds(225, 100, 82, 20);
valider.addActionListener(new ValiderListener());
this.setVisible(true);
}
}
class ValiderListener extends JFrame implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
ActionEvent a;
try {
} catch (Exception e2) {
}
}
}
Classe Base :
public class Base {
public Connection conn;
public void connexionBD(){
/* Chargement de la Base de données */
try{
Class.forName("com.mysql.jdbc.Driver.");
} catch (Exception e) {
System.out.println(" Erreur de chargement de la Base de données");
e.getMessage();
System.exit(0);
}
/* Connexion de la Base de données */
try {
String url = "jdbc:mysql://localhost/gescom";
String user = "root";
String passwd ="";
conn = DriverManager.getConnection(url, user, passwd);
} catch (Exception e) {
System.out.println(" Erreur de Connexion à la Base de données ");
}
}
/* */
public Connection getConnect(){
return conn;
}
/* Deconnexion */
public void Deconnexion(){
try {
conn.close();
} catch (Exception e) {
System.out.println(" Déconnexion Impossible ");
}
}
}
Classe TraitementAuthentification :
public class TraitementAuthentification implements ActionListener {
public Base b = new Base();
public Connection conn;
static JTextField login1,passwd ;
PreparedStatement statement = null;
ResultSet resultat;
public TraitementAuthentification(){
}
@Override
public void actionPerformed(ActionEvent e) {
String login = login1.getText();
String password = passwd.getText();
b.connexionBD();
conn = b.getConnect();
try{
statement = (PreparedStatement) conn.createStatement();
String sql = "SELECT password FROM authentification WHERE login ='"+login+"'";
resultat = statement.executeQuery(sql);
if(resultat.next()){
String motDePasse = resultat.getString(1);
if(motDePasse.equals(password)){
JOptionPane.showMessageDialog(null,"Connexion réussie ! ","Success",JOptionPane.PLAIN_MESSAGE);
}else {
JOptionPane.showMessageDialog(null,"Mot de passe incorrect ! ","Error",1);
}
}else {
JOptionPane.showMessageDialog(null,"Login incorrect ! ","Error",1);
}
conn.close();
}catch (SQLException e4) {
System.out.println(e4.getMessage());
}
}
}
A voir également:
- Authentification java
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Waptrick java voiture - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
1 réponse
Bonjour,
Ne masque pas tes Exception avec des messages qui ne permettent pas de déboguer.
De plus : ne fais pas de System.exit. Si tu veux que le programme plante alors laisse l'exception se propager jusqu'au main (ou créé un autre throwable pour l'encapsuler)
Et n'oublie pas les finally pour fermer tes connexions.
Ne masque pas tes Exception avec des messages qui ne permettent pas de déboguer.
De plus : ne fais pas de System.exit. Si tu veux que le programme plante alors laisse l'exception se propager jusqu'au main (ou créé un autre throwable pour l'encapsuler)
Et n'oublie pas les finally pour fermer tes connexions.
} catch (Exception e) {
e.printStackTrace();
// throw new RuntimeException("Contexte de l'erreur", e);
} finally {
if (conn!=null) {
try {
conn.close();
}
catch (Exception e) {}
}
try { String url = "jdbc:mysql://localhost/gescom"; String user = "root"; String passwd =""; conn = DriverManager.getConnection(url, user, passwd); } catch (Exception e) { e.printStackTrace(); } finally{ if(conn != null){ try { conn.close(); } catch (Exception e2) { e2.printStackTrace(); } } } }Ça ne règle normalement pas ton problème, mais au moins tu vas avoir une information détaillée de ce qui a planté.
Par contre, dans le cas où il y ait une exception, je continuerai quand même à la propager, parce que tu n'es pas connecté à la base de donnée, donc il serait faux de continuer.
} catch (Exception e) { e.printStackTrace(); throw new IllegalStateException("Connection is not available", e); }Remarque : en général on n'affiche pas l'exception sur un close, parce que ça ne sert à rien, mais c'est un cas particulier, il vaut mieux avoir trop de logs que pas assez.
class ValiderListener extends JFrame implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { ActionEvent a = null; try { TraitementAuthentification ta = new TraitementAuthentification(); ta.actionPerformed(a); } catch (Exception e2) { e2.printStackTrace(); } } }mais voici le message d'erreur qui est affiché au niveau de la console :
java.lang.NullPointerException
at TraitementAuthentification.actionPerformed(TraitementAuthentification.java:31)
at ValiderListener.actionPerformed(Authentification.java:80)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
L'erreur se produit sur la classe TraitementAuthentification, toi tu nous montres le code de la classe ValiderListener...
Cependant je devines facilement le problème puisque dans le code au dessus, tu fais ta.actionPerformed(a); alors que a est égal à null...