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 :

[MySQL] Erreur "MySQLSyntaxErrorException"


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2012
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 22
    Par défaut [MySQL] Erreur "MySQLSyntaxErrorException"
    Bonjour,

    Je suis en train de développer une application de gestion de Candidats.

    Nom de la base de donnée Dbasemalek. Une table identif avec deux attributs NomIdentif et MotPass.

    Pour qu'un utilisateur puisse accéder à l'application il doit s'identifier.

    J'ai écrit le code source suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
              String ID = jTextField1.getText();
              String MP = jTextField2.getText();
            ÉcoleImemMalek ecol =  new ÉcoleImemMalek();
     
            System.out.println(jTextField1.getText());
            ecol.ExecQuery("select from identif where ID=identif.NomIdentif AND MP=identif.MotPass");
    et le code source de la methode ExecQuery est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     public void ExecQuery(String req)
        {
            try{
                System.out.println(req);
                rs = st.executeQuery(req);
                while(rs.next())
                    System.out.println(rs.getString("utilisateur"));
            }catch(SQLException e){
                System.out.println(e);
            }  
        }
    A l'exécution, l'erreur suivante s'affiche
    select from identif where ID=identif.NomIdentif AND MP=identif.MotPass
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from identif where ID=identif.NomIdentif AND MP=identif.MotPass' at line 1
    Quelqu'un saurait-il m'expliquer d'où vient le problème ?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Comme le dit ton message d'erreur, ta requête SQL est incorrecte (tu ne précise même pas ce que tu sélectionnes par exemple) :
    You have an error in your SQL syntax;
    Teste déjà ta requête dans un éditeur style dbVisualizer ou SQL Developer. Ca te permettra d'être sur que tu n'écris pas des requêtes incorrectes. Ensuite, tu pourras la passer au sein du code Java.

    Ensuite, j'ai d'autres remarques sur le fond de ton code. Essaye de respecter les conventions :
    - Ne pas utiliser de majuscule en début de méthode
    - Ne pas faire de classe Java avec accent
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Membre averti
    Inscrit en
    Mai 2012
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 22
    Par défaut
    Merci mais comment puis-je résoudre mon problème ? Comment corriger la requête ?

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Ta requête est incorrecte.

    1 Tu n'as pas indiqué les champs de ta table que tu veux récupérer après le mot clef select.
    2 Ce n'est pas de cette façon que tu pourras passer le contenu de tes champs MP et ID à ta requête.

    Je t'enjoins donc à aller suivre un tutoriel sur JDBC de bout en bout afin de comprendre ce qu'il faut faire.

    http://jguillard.developpez.com/JDBC/

  5. #5
    Membre averti
    Inscrit en
    Mai 2012
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 22
    Par défaut
    Bonsoir, mes amis,

    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
    public boolean ExecQuery(String req, String ID, String MP)
        {
            boolean t=false;
            try{
                System.out.println(req);
                rs=st.executeQuery(req);
     
                while(rs.next() || (t=true)){
                 String St=rs.getString("NomIdentif");
                 String Mp=rs.getString("MotPass");
                 if ((St==ID) && (Mp==MP))
                 {t=true;
                 System.out.println(t);}
     
                 System.out.println(St+ " " +Mp);
                }
            }catch(SQLException e){
                System.out.println(e);
     
            }  
     
         return t;   
        }
    après l’exécution de cette méthode, Error:

    java.sql.SQLException: After end of result set

    Qui peut m'aider à résolu cette erreur !
    Cordialement ..

  6. #6
    Membre averti
    Inscrit en
    Mai 2012
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 22
    Par défaut
    Citation Envoyé par sinok Voir le message
    Ta requête est incorrecte.

    1 Tu n'as pas indiqué les champs de ta table que tu veux récupérer après le mot clef select.
    2 Ce n'est pas de cette façon que tu pourras passer le contenu de tes champs MP et ID à ta requête.

    Je t'enjoins donc à aller suivre un tutoriel sur JDBC de bout en bout afin de comprendre ce qu'il faut faire.

    http://jguillard.developpez.com/JDBC/
    merci mon frère pour le tutoriel

  7. #7
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Tes conditions de boucle sont incorrectes, en effet, elles autorisent à boucler au délà du contenu du resultset.

    En effet, l'opérateur de comparaison est == et non = que tu utilises dans les conditions de ton while.

    Mieux vaut faire le while sur le rs.next uniquement et faire un break dans le cas tu as trouvé le couple id/mot de passe

Discussions similaires

  1. [MySQL] Sauvegarder du texte (db mysql) CR, single-quote, double-quote, etc
    Par vandeyy dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/03/2007, 11h22

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