Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 12 sur 12
  1. #1
    Invité de passage
    Inscrit en
    mai 2012
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : mai 2012
    Messages : 21
    Points : 0
    Points
    0

    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 :
    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 :
    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 Nicolas
    Ingénieur développement logiciels
    Inscrit en
    juin 2009
    Messages
    3 861
    Détails du profil
    Informations personnelles :
    Nom : Homme Nicolas
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : juin 2009
    Messages : 3 861
    Points : 9 060
    Points
    9 060

    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

  3. #3
    Invité de passage
    Inscrit en
    mai 2012
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : mai 2012
    Messages : 21
    Points : 0
    Points
    0

    Par défaut

    Merci mais comment puis-je résoudre mon problème ? Comment corriger la requête ?

  4. #4
    Modérateur
    Avatar de sinok
    Profil pro
    Inscrit en
    août 2004
    Messages
    8 756
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : août 2004
    Messages : 8 756
    Points : 11 827
    Points
    11 827

    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/
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Invité de passage
    Inscrit en
    mai 2012
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : mai 2012
    Messages : 21
    Points : 0
    Points
    0

    Par défaut

    Bonsoir, mes amis,

    Code :
    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
    Invité de passage
    Inscrit en
    mai 2012
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : mai 2012
    Messages : 21
    Points : 0
    Points
    0

    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
    Modérateur
    Avatar de sinok
    Profil pro
    Inscrit en
    août 2004
    Messages
    8 756
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : août 2004
    Messages : 8 756
    Points : 11 827
    Points
    11 827

    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
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  8. #8
    Invité de passage
    Inscrit en
    mai 2012
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : mai 2012
    Messages : 21
    Points : 0
    Points
    0

    Par défaut

    mercii beaucoup mon frère,

    Si la condition est fausse; je doit afficher un message d'erreur !
    quels sont les méthodes utilisés en java pour un message d'erreur !

    mieux,j'aime à voire le message s'affiche dans même fenêtre!

    Cordialement ..

  9. #9
    Expert Confirmé
    Avatar de olivier.pitton
    Homme Profil pro olivier pitton
    Étudiant
    Inscrit en
    juin 2012
    Messages
    355
    Détails du profil
    Informations personnelles :
    Nom : Homme olivier pitton
    Âge : 25
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2012
    Messages : 355
    Points : 2 641
    Points
    2 641

    Par défaut

    Plop,

    Je verrai plus un code comme cela. Ici tu n'aurai pas le problème de ton booléen tout en gardant ton type de retour. De plus, pense à fermer tes ressources (ResultSet et Statement).

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    public boolean ExecQuery(String req, String ID, String MP)
        {        
            try{
                rs=st.executeQuery(req);
                while(rs.next()){
                 String St=rs.getString("NomIdentif");
                 String Mp=rs.getString("MotPass");
                 System.out.println(St+ " " +Mp);
                }
            }catch(SQLException e){
                System.err.println(e); 
                return false;
            }  
         return true;   
        }
    Maintenant, la condition sera forcément fausse à un moment donné, lorsque tu n'auras plus rien sur lequel itéré, et donc que tu auras parcouru l'ensemble des données retournées par ta requête SQL.

    Pour ce qui est de la gestion des messages, tu peux simplement passer par les sorties standards (System.out et System.err). Si tu désires avoir une gestion plus précise (niveau d'erreur, écriture des messages dans des flux, ...) je te conseille de passer par des APIs et bibliothèques de logging.

    Je t'invite à regarder les suivantes :
    1. java.util.logging
    2. log4j
    3. slf4j


    Personnellement, j'utilise java.util.logging pour des petits projets personnels, et log4j pour des projets plus sérieux.

  10. #10
    Invité de passage
    Inscrit en
    mai 2012
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : mai 2012
    Messages : 21
    Points : 0
    Points
    0

    Par défaut

    Bonjour,
    je doit modifier le ligne sélectionné seulement!

    Quel est le méthode utilisé en java/sql!

    Cordialement ..
    Images attachées Images attachées

  11. #11
    Expert Confirmé
    Avatar de olivier.pitton
    Homme Profil pro olivier pitton
    Étudiant
    Inscrit en
    juin 2012
    Messages
    355
    Détails du profil
    Informations personnelles :
    Nom : Homme olivier pitton
    Âge : 25
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2012
    Messages : 355
    Points : 2 641
    Points
    2 641

    Par défaut

    Plop,

    Il te suffit d'exécuter une requête de type UPDATE.

    Pour la partie Java, il faut faire quelque chose de la forme suivante :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
     
    try{
       Connection connection = ...
       Statement statement = connection.createStatement();
       statement.executeQuery("UPDATE ....");
    } catch(SQLException e){
     
    }
    Je t'invite à lire la FAQ JDBC ici pour en apprendre plus.

  12. #12
    Invité de passage
    Inscrit en
    mai 2012
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : mai 2012
    Messages : 21
    Points : 0
    Points
    0

    Par défaut

    Citation Envoyé par olivier.pitton Voir le message
    Plop,

    Il te suffit d'exécuter une requête de type UPDATE.

    Pour la partie Java, il faut faire quelque chose de la forme suivante :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
     
    try{
       Connection connection = ...
       Statement statement = connection.createStatement();
       statement.executeQuery("UPDATE ....");
    } catch(SQLException e){
     
    }
    Je t'invite à lire la FAQ JDBC ici pour en apprendre plus.
    merci mon amis pour votre réponse,

    Je sais que je doit utiliser" UPDATE", mais je doit modifier le ligne ""sélectionner"" sans entrer aucun valeur d'un attribut du tableau.?
    Aprés la sélection d'une ligne j'appuie sur le bouton supprimer par exemple, juste le ligne sélectionner supprimer sans enrer aucun valeur !!!

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •