Authentification Login/mot de passe avec interface graphique
mano23
-
29 avril 2013 à 20:05
Whismeril
Messages postés18607Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention23 septembre 2023
-
4 juin 2014 à 13:31
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);
}
}
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)