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 :

Problème avec un PreparedStatement


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 22
    Points : 19
    Points
    19
    Par défaut Problème avec un PreparedStatement
    Bonsoir à tous,
    J'écris en ce moment un petit programme en java qui permet de lire et de modifier des bases de données mysql.
    A un moment j'utilise un PreparedStatement pour effectuer des requêtes UPDATE en boucle. J'ai donc le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    while(rset1.next()){
                            PreparedStatement  requeteDelete = conn2. prepareStatement ("UPDATE ? SET ? = ? WHERE ? = ?");
     
     
                            requeteUpdate.setString(1,nomTableDest);
                            requeteUpdate.setString(2,col2);
                            requeteUpdate.setString(3,rset1.getString(2));
                            requeteUpdate.setString(4,col1);
                            requeteUpdate.setString(5,rset1.getString(1));
     
                            requeteUpdate.executeUpdate();
                        }
    Rien de bien compliqué me direz-vous! Seulement quand j'exécute mon programme j'obtiens l'erreur suivante :
    java.sql.SQLException: Syntax error or access violation message from server: "Erreur de syntaxe près de ''tabletest2' SET 'champ2' = 'champ1table1' WHERE 'cle2' = '1'' à la ligne 1"

    Après plusieurs tests j'ai l'impression que mon problème vient des cotes qui sont ajoutées autour de chaque champ car quand j'écris ma requête en entier cela fonctionne. Comment se fait-il qu'il y ait ces cotes de rajoutées et est-il possible de les supprimer pour que la syntaxe de ma requête soit alors correcte?
    Voilà j'espère m'être clairement exprimé et je vous remercie par avance!

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu ne peux utiliser les ? que pour les paramètres, et non pas pour les noms de table/colonne... Tu dois donc spécifier cela directement dans le SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    while(rset1.next()){
        PreparedStatement  requeteDelete = conn2. prepareStatement (
            "UPDATE " + nomTableDest + 
            " SET " + col2
            " = ? WHERE ? = ?");
     
        requeteUpdate.setString(1,rset1.getString(2));
        requeteUpdate.setString(2,col1);
        requeteUpdate.setString(3,rset1.getString(1));
     
        requeteUpdate.executeUpdate();
    }
    a++

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Merci pour ta réponse mais ça ne marche toujours pas pourtant tu as sûrement raison.
    Bon comme je suis assez pressé je suis repassé au Statement classique et ça marche. Je ne comprends pas trop pourquoi le PreparedStatement m'a echappé...
    En tout cas merci quand même et bonne soirée!

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    J'ai oublié le nom d'une colonne...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while(rset1.next()){
        PreparedStatement  requeteDelete = conn2. prepareStatement (
            "UPDATE " + nomTableDest + 
            " SET " + col2
            " = ? WHERE " + col1 + " = ?");
     
        requeteUpdate.setString(1,rset1.getString(2));
        requeteUpdate.setString(2,rset1.getString(1));
     
        requeteUpdate.executeUpdate();
    }
    a++

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 23/08/2007, 15h47
  2. [Oracle]Problème avec PreparedStatement
    Par adrien.nicolet dans le forum JDBC
    Réponses: 3
    Dernier message: 07/03/2007, 14h35
  3. Réponses: 3
    Dernier message: 23/10/2006, 09h24
  4. [JDBC]Problème avec PreparedStatement
    Par tomca dans le forum JDBC
    Réponses: 15
    Dernier message: 08/07/2005, 13h59
  5. Réponses: 5
    Dernier message: 19/08/2004, 11h11

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