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 :

[requete SQL] Probleme requete UPDATE


Sujet :

JDBC Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 89
    Points : 38
    Points
    38
    Par défaut [requete SQL] Probleme requete UPDATE
    Bonjour,

    je souhaite mettre a jour une ligne d'une table "client" d'une base de données , mon code est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public void modifier(String table, String[] parametre){
    			try{ 	PreparedStatement ps = conn.prepareStatement("UPDATE client " +
    				   		"(Nom, Prenom, Adresse, Tel) VALUES (?,?,?,?)" +
    						"WHERE Nom = '"+parametre[0]+"' AND Prenom = '"+parametre[1]+"';") ; 
     
    				ps.setInt(3,parametre[x][0]);
    				ps.setString(4,parametre[x][1]);
    			catch(SQLException e) {  
    				e.printStackTrace();
    			}
    }
    j'obtient une erreur: SQLException Erreur de syntaxe près de '(Nom, Prenom, Adresse, Tel) à la ligne 1
    Quelles est la synthaxe exact pour une requete UPDATE?

    Et comment faire pour ne réactualiser uniquement les champs qui ont réelment changés, c'est à dire si Adresse a changé mais pas Tel, par exemple?

    Merci beaucoup.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Ce n'est pas la bonne syntaxe pour un update je pense !
    Il faudrait que tu écrive une requette du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "UPDATE client SET Nom = '?', Prenom = '?', Adresse='?', Tel='?'  WHERE Nom = '"+parametre[0]+"' AND Prenom = '"+parametre[1]+"' ;"
    Normalement ça devrait réactualiser que les champs que tu as changé.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 89
    Points : 38
    Points
    38
    Par défaut
    Non ca ne fonctionne toujours pas !!! c'est prise de tete ...

    En fait j'ai une nouvelle erreur que je comprend encore moins :
    SQLException Parameter index out of range (1 > number of parameters, which is 0).
    voila a quoi resemble maintenant mon code :
    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
     
     
    public void modifier(String table, String[] parametre){
    			try{ 
     
    				PreparedStatement ps = conn.prepareStatement("UPDATE client" +
    				   		"SET"+"Nom = "+"'?'"+"Adresse = "+"'?'"+"Tel= "+"'?'"+
    											"WHERE Nom = '"+parametre[0]+"' AND Prenom = '"+parametre[1]+"';") ;  
     
     
    				ps.setString(1,parametre[0]);
    				ps.setDouble(2,parametre[2]); 	
    				ps.setDouble(3,parametre[3]); 	
    				ps.executeUpdate(); 
    			} 
    			catch(SQLException e) {  
    				e.printStackTrace();
    			}
    		}

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 89
    Points : 38
    Points
    38
    Par défaut
    Personne ne peut m'aider!

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    J'ai peut être trouvé l'erreur, t'as oublié d'espacer ta requête, tout est collé et c'est pas clair!
    essayes avec cette requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    PreparedStatement ps = conn.prepareStatement("UPDATE client " + 
                         "SET Nom = " + ? + " Adresse = " + ? + " Tel = "+ ? + 
                         " WHERE Nom = "+ parametre[0] + " AND Prenom = " + parametre[1]);

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 48
    Points : 58
    Points
    58
    Par défaut
    Il y a plusieurs trucs bizarres dans ton code:

    1) Tu fais des setDouble() et tu passes des Strings comme paramètre...
    2) Quand on utilise un PreparedStatement, on a pas besoin d'utiliser les ' autour des paramètres de type String
    3) Pourquoi passes-tu certains paramètres avec une méthode set (les valeurs de ton SET) et d'autres directement dans ton code (les valeurs de ton WHERE)?

    Voilà de tête ce que je ferais:

    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
    public int modifier(String table, String[] parametre){
        try{
            PreparedStatement ps = conn.prepareStatement(
                "UPDATE client SET Nom = ?, Adresse = ?, Tel= ? WHERE Nom = ? AND Prenom = ?") ; 
     
            ps.setString(1, parametre[0]);
            ps.setString(2, parametre[2]);    
            ps.setString(3, parametre[3]);    
            ps.setString(4, parametre[0]);
            ps.setString(5, parametre[1]);    
     
            int nb = ps.executeUpdate();
            ps.close();
     
            return nb;
        } catch(SQLException e) { 
            e.printStackTrace();
        }
    }
    - Colargol

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 89
    Points : 38
    Points
    38
    Par défaut
    Ok merci à vous deux,c'est nikel, ca ne me change aucune valeur mais au moins la syntaxe et bonne, en fait je savais pas pour les ' ...

    Le reste s'était normal, car j'avais simplifié le code pour le mettre sur le post et j'ai placé qq erreur sans le vouloir dsl.

    Remercie

  8. #8
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    de rien!!

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 89
    Points : 38
    Points
    38
    Par défaut
    Non de non, j'ai parlé beaucoup beaucoup beaucoup beaucoup beaucoup beaucoup beaucoup beaucoup beaucoup beaucoup beaucoup beaucoup beaucoup beaucoup beaucoup beaucoup beaucoup beaucoup beaucoup beaucoup beaucoup TROP VITE...

    J'ai toujours une erreur de syntaxe à la c..

    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
     
    public int modifier(String table, String[] parametre, String nomChang){ 
    	try{
    	PreparedStatement ps = conn.prepareStatement("UPDATE client " +
    				   		"SET Nom = "+" ? "+" Adresse = "+" ? "+" Tel = "+" ? "+
    											"WHERE Nom = "+" ? "+" AND Prenom = "+" ? "+" ; ") ; 
    	ps.setString(1,parametre[0]);
    	ps.setString(2,parametre[2]); 	
    	ps.setString(3,parametre[3]); 
    	ps.setString(4,nomChang); 
    	ps.setString(5,parametre[1]); 
    	ps.executeUpdate(); 
    	ps.close();
     
    	} 
    	catch(SQLException e) {  
    	e.printStackTrace();
    	}
    }
    Erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java.sql.SQLException: Erreur de syntaxe près de 'Adresse =  testAd  Tel =  testTel WHERE Nom =  'testNom'  AND P' à la ligne 1
    Lorsque j'affiche ps il me donne bien :
    UPDATE cleint SET Nom = testNom Adresse = testAd Tel = testTel WHERE Nom = testNom AND Prenom = testPre ;

    C'est lors de l'execution de ps.executeUpdate() que vient l'erreur.

    Une idée ???

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    Ben vi, faut des virgules entre les SET :

    UPDATE client SET Nom = testNom, Adresse = testAd, Tel = testTel WHERE Nom = 'testNom' AND Prenom = 'testPre' ;

    Par contre, je savais pas que les ' n'étaient pas obligatoire...

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 89
    Points : 38
    Points
    38
    Par défaut
    eh oui! la boulette, tu avais raison NikauSenpeï (on est vraiment envahie par les marseillais )
    Merci

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    Pas de pb... En fait, ça m'a fait bizarre que personne ne le voit avant moi. Comme quoi, c'est parfois les choses les plus évidentes qu'on voit le moins bien

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 89
    Points : 38
    Points
    38
    Par défaut
    Je me doute et meme moi j'ai eu honte quand je m'en suis apercu, (un peu avant que tu réponde)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] probleme requete sql
    Par super-java dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 19/10/2007, 13h55
  2. [SQL] probleme requete sql
    Par tondeuz dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 05/06/2007, 11h26
  3. [SQL] Probleme requete sql (jointure)
    Par Pepito2030 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/09/2006, 18h15
  4. [SQL] Probleme requete SQL HELP
    Par sephirothmana dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 16/06/2006, 15h50
  5. probleme requete sql
    Par Shosho dans le forum Langage SQL
    Réponses: 12
    Dernier message: 03/05/2005, 09h25

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