Précédent   Forum du club des développeurs et IT Pro > Java > Général Java > JDBC
JDBC Forum d'entraide sur l'API JDBC (Java Database Connectivity) et l'accès aux bases de données. Avant de poster -> FAQ JDBC
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/12/2012, 09h41   #1
bijad2009
Invité de passage
 
Inscription : mai 2012
Messages : 20
Détails du profil
Informations forums :
Inscription : mai 2012
Messages : 20
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
Citation:
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.
bijad2009 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 10h29   #2
Robin56
Modérateur
 
Avatar de Robin56
 
Homme Nicolas
Ingénieur développement logiciels
Inscription : juin 2009
Messages : 2 870
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 : 2 870
Points : 7 506
Points : 7 506
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) :
Citation:
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
__________________
Robin56 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 10h40   #3
bijad2009
Invité de passage
 
Inscription : mai 2012
Messages : 20
Détails du profil
Informations forums :
Inscription : mai 2012
Messages : 20
Points : 0
Points : 0
Merci mais comment puis-je résoudre mon problème ? Comment corriger la requête ?
bijad2009 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 11h23   #4
sinok
Modérateur
 
Avatar de sinok
 
Inscription : août 2004
Messages : 8 661
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2004
Messages : 8 661
Points : 12 474
Points : 12 474
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.
sinok est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/12/2012, 16h34   #5
bijad2009
Invité de passage
 
Inscription : mai 2012
Messages : 20
Détails du profil
Informations forums :
Inscription : mai 2012
Messages : 20
Points : 0
Points : 0
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 ..
bijad2009 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2012, 16h37   #6
bijad2009
Invité de passage
 
Inscription : mai 2012
Messages : 20
Détails du profil
Informations forums :
Inscription : mai 2012
Messages : 20
Points : 0
Points : 0
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
bijad2009 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2012, 21h11   #7
sinok
Modérateur
 
Avatar de sinok
 
Inscription : août 2004
Messages : 8 661
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2004
Messages : 8 661
Points : 12 474
Points : 12 474
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.
sinok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2012, 13h28   #8
bijad2009
Invité de passage
 
Inscription : mai 2012
Messages : 20
Détails du profil
Informations forums :
Inscription : mai 2012
Messages : 20
Points : 0
Points : 0
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 ..
bijad2009 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 18h10   #9
olivier.pitton
Membre éprouvé
 
Avatar de olivier.pitton
 
Homme olivier pitton
Étudiant
Inscription : juin 2012
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme olivier pitton
Âge : 24
Localisation : France

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

Informations forums :
Inscription : juin 2012
Messages : 213
Points : 444
Points : 444
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.
olivier.pitton est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/12/2012, 13h53   #10
bijad2009
Invité de passage
 
Inscription : mai 2012
Messages : 20
Détails du profil
Informations forums :
Inscription : mai 2012
Messages : 20
Points : 0
Points : 0
Bonjour,
je doit modifier le ligne sélectionné seulement!

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

Cordialement ..
Images attachées
Type de fichier : png Capture.PNG (10,3 Ko, 4 affichages)
bijad2009 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 15h13   #11
olivier.pitton
Membre éprouvé
 
Avatar de olivier.pitton
 
Homme olivier pitton
Étudiant
Inscription : juin 2012
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme olivier pitton
Âge : 24
Localisation : France

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

Informations forums :
Inscription : juin 2012
Messages : 213
Points : 444
Points : 444
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.
olivier.pitton est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 16h10   #12
bijad2009
Invité de passage
 
Inscription : mai 2012
Messages : 20
Détails du profil
Informations forums :
Inscription : mai 2012
Messages : 20
Points : 0
Points : 0
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 !!!
bijad2009 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 14h20.


 
 
 
 
Partenaires

Hébergement Web