IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

Authentification MySQL JDBC


Sujet :

JDBC Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Par défaut Authentification MySQL JDBC
    Bonjour,

    J'essaie de faire un système d'authentification, avec le code que j'ai le problème c'est que mon login et mon mdp sont toujours corrects que je rentre rien ou n'importe quoi. getText() est-elle la bonne méthode pour récupérer ce que l'user à rentré dans les champs ??

    Voici mon code en espérant que vous pourrez m'aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
     
    private void buttonSeConnecterActionPerformed(java.awt.event.ActionEvent evt) {                                                  
            PreparedStatement test = null;
            String login = textFieldIdentifiant.getText();
            String mdp = passwordFieldMotDePasse.getText();
            ResultSet rs = null;
            String url = "jdbc:mysql://localhost/...";
            String driver = "sun.jdbc.odbc.JdbcOdbcDriver";// connexion driver jdbc
            String user = "root";
            String password = "...";
     
            try {
     
                Class.forName(driver);
                try (Connection connection = (Connection) DriverManager.getConnection(url, user, password)) {// connexion avec la bdd
                    String sql = "SELECT login FROM UTILISATEUR WHERE login= ? AND mdp = ?";
                    test = connection.prepareStatement(sql);
                    test.setString(1, login);
                    test.setString(2, mdp);
                    rs = test.executeQuery();
                    if (rs == null) {
                        System.out.println("Echec de la connexion");
                    } else {
                        System.out.println("Connexion réussie");
                        setVisible(false);// fermer la frame courante auth
                        new accueil().setVisible(true);// ouvre la frame accueil
                    }
                }
            } catch (ClassNotFoundException | SQLException cnfe) {
                System.err.println(cnfe);
            }
        }

  2. #2
    Membre Expert
    Avatar de olivier.pitton
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2012
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 355
    Par défaut
    C'est normal, ton test de vérification est incorrect.

    La méthode executeQuery te renverra toujours un ResultSet, ou une exception, mais jamais null. Ce que tu dois tester c'est s'il y a au moins une ligne dans le ResultSet. S'il y a une ligne, cela signifie qu'il existe une entrée dans ta base contenant un login X pour un password Y, donc c'est bon. S'il n'y a aucune ligne, alors soit le login / password est faux, soit la ligne n'existe pas.

    Essaye cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    String sql = "SELECT login FROM UTILISATEUR WHERE login= ? AND mdp = ?";
    test = connection.prepareStatement(sql);
    test.setString(1, login);
    test.setString(2, mdp);
    rs = test.executeQuery();
    if (!rs.next()) {
      System.out.println("Echec de la connexion");
    } else {
      setVisible(false);// fermer la frame courante auth
      new accueil().setVisible(true);// ouvre la frame accueil
    }
    PS : Pense à ne charger le Driver qu'une seule fois et pas à chaque clic. De plus, pense à fermer les ressources comme ResultSet et PreparedStatement.

Discussions similaires

  1. [MySQL-JDBC] Problème de CLASSPATH
    Par stukov dans le forum JDBC
    Réponses: 3
    Dernier message: 14/03/2006, 13h55
  2. [Mysql][JDBC][Java]
    Par julienduprat dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 03/03/2006, 13h29
  3. [JDBC]pb com.mysql.jdbc.Driver
    Par fafaroro dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 30/12/2005, 20h42
  4. [Débutant] MySQL, JDBC et combolists à jour
    Par calogerogigante dans le forum JDBC
    Réponses: 9
    Dernier message: 06/09/2005, 17h40
  5. [Mysql][JDBC] Votre avis !
    Par sebb84 dans le forum JDBC
    Réponses: 5
    Dernier message: 07/12/2004, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo