Authentification Login/mot de passe avec interface graphique [Fermé]

Signaler
-
Whismeril
Messages postés
14390
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
25 mars 2020
-
Salut les gars,

Je suis entrain de faire une interface graphique pour une authentification login/password mais je n'arrive pas à comparer le login et le mot de passe saisis
par l'utilisateur (interface) et ceux enregistrés dans la base de données MySQL.

Voici mes codes:
Classe Authentification
package projetJava;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.JOptionPane;
import javax.swing.JTextField;

class Authentification implements ActionListener {

//Objet pour se connecter à la base de données
public Base b = new Base();
public Connection conn;

static JTextField user, mdp;
    
//Objet PreparedStatement
    PreparedStatement statement = null;
    //Objet ResultSet
    ResultSet resultat = null;

public Authentification() {

}

public void actionPerformed(ActionEvent ae)
{

String login = user.getText();
        String password = mdp.getText();
        
        b.ConnexionBD();
conn = b.getConnect();

//Manipulation
try {
//Création de la requête
statement conn.prepareStatement("SELECT password FROM utilisateurs WHERE login'"+login+"'");

resultat = statement.executeQuery();

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

//Récupération de la requête dans une variable
resultat = statement.executeQuery();

conn.close();
}
catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}

Classe InterfaceConnexion
package projetJava;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import javax.swing.border.TitledBorder;

public class InterfaceConnexion extends JFrame {
/**
 * 
 */
private static final long serialVersionUID = 1L;

JPanel panelHaut, panelBas, panelGauche, panelDroite, panelCentre, panelConnexion;

JLabel login = new JLabel("Login");
JLabel password = new JLabel("Mot de passe");
JButton valider = new JButton("Valider");
JButton annuler = new JButton("Annuler");

//static JTextField user, mdp;
    
    public InterfaceConnexion() {

super();

/*Initialisation du JFrame*/
this.setSize (new Dimension (600,400));
//On ne pourra pas agrandir la fenetre intitulée.
this.setResizable (false);

/*Récupération du ContentPane*/
Container contenu = this.getContentPane();

/*Création des JPanel avec leur Layout Manager*/
panelHaut = new JPanel(new GridLayout (1,1));
panelBas = new JPanel(new GridLayout (1,1));
panelGauche = new JPanel(new GridLayout (1,1));
panelDroite = new JPanel(new GridLayout (1,1));
panelCentre = new JPanel(new GridLayout (0,1));
panelConnexion = new JPanel();

/*Ajout des panneaux au ContentPane*/
    contenu.add(panelHaut, BorderLayout.NORTH);
    contenu.add(panelBas, BorderLayout.SOUTH);
    contenu.add(panelGauche, BorderLayout.EAST);
    contenu.add(panelDroite, BorderLayout.WEST);
    contenu.add(panelCentre, BorderLayout.CENTER);

    /*Ajout du formulaire de connexion à panelCentre*/
    panelCentre.setBorder(new TitledBorder("Connexion"));
    panelCentre.add(panelConnexion);
    panelCentre.add(login);
    panelCentre.add(new JTextField());
    panelCentre.add(password);          
    panelCentre.add(new JTextField());
    panelCentre.add(valider);
        valider.addActionListener(new ValiderListener());
    panelCentre.add(annuler);
    
    /*Ajout du texte de panelConnexion*/
    panelConnexion.add(new JLabel ("CONNEXION"));
}

}

class ValiderListener extends JFrame implements ActionListener {

/**
 * 
 */
private static final long serialVersionUID = 1L;

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
try {

ActionEvent a = null;

Authentification au = new Authentification();

au.actionPerformed(a);		
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}

Classe Base
package projetJava;

import java.sql.Connection;
import java.sql.DriverManager;

class Base {

//Variable pour la connexion	
public Connection conn;

public void ConnexionBD()
{
try
{
Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception ex)
{ 
System.out.print("Erreur de Chargement");
System.exit(0);
}
try
{
String url = "jdbc:mysql://localhost:3306/gpp";
String user = "root";
String passwd = "";
conn = DriverManager.getConnection(url, user, passwd);
}
catch(Exception ex)
{
System.out.print("Erreur de connexion à la BD");
}
}

public Connection getConnect()
{
return conn;
}

public void DeconnexionBD()
{
try {
conn.close();
}
catch(Exception ex) {
System.out.print("Déconnexion impossible");
}
}
}

Classe Test
package projetJava;

public class Test {

public Test() {
// TODO Auto-generated constructor stub
}

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub

InterfaceConnexion  ic = new InterfaceConnexion();
ic.setTitle("Gestion des Paiements d'une pharmacie");
    ic.setVisible(true);
}

}

3 réponses

J'ai cette erreur au niveau de la méthode actionPerformed de la classe Authentification:
java.lang.NullPointerException
at projetJava.Authentification.actionPerformed(Authentification.java:33)
at projetJava.ValiderListener.actionPerformed(InterfaceConnexion.java:91)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
9
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 184 internautes nous ont dit merci ce mois-ci

revoit ta requete
"SELECT password FROM utilisateurs WHERE login'"+login+"'"
ajoute un = dans ta comparaison
Whismeril
Messages postés
14390
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
25 mars 2020
362
Merci, mais depuis un an, il est peut être passé à autre chose...
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
265
Salut,

ca a l'air bon, quel est le problème ?

Essayes de ne nous donner que le code utile à la compréhension de ton problème, le reste ne fait que noyer l'information.