Authentification en Java/mysql

Fermé
aliouneman2 - 19 déc. 2014 à 10:00
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 21 déc. 2014 à 16:14
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 :

 
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:

1 réponse

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
19 déc. 2014 à 12:01
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.

} catch (Exception e) {
    e.printStackTrace();
    // throw new RuntimeException("Contexte de l'erreur", e);
} finally {
    if (conn!=null) {
        try {
            conn.close();
        }
        catch (Exception e) {}
}
0
aliounemane2 Messages postés 28 Date d'inscription mardi 16 décembre 2014 Statut Membre Dernière intervention 5 octobre 2017
20 déc. 2014 à 11:43
Si j'ai bien compris c'étais sa dont vous parlez :



			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();
						}
				
								}	
		
			}
			
		}
	

0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
Modifié par KX le 20/12/2014 à 11:50
Oui, presque.

Ç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.
0
finalement j'ai ajouté ce code de la classe Authentification car ayant pensé que j'ai trouvé la solution


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)
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
Modifié par KX le 21/12/2014 à 16:15
Bonjour,

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...
0