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 :

[JDBC]problème de syntaxe dans une requête en java...


Sujet :

JDBC Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 288
    Points : 76
    Points
    76
    Par défaut [JDBC]problème de syntaxe dans une requête en java...
    bonjour tout le monde... je n'arrive pas à corriger une erreur : je suis dans un ActionPerformed

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    else if (e.getSource() == boutonSupprimer)
                    {
                        try
                        {
     
                            supp = c.getConnection().createStatement();
     **********     rep = supp.executeQuery("delete from Personne where (num='$num_courant')");
                        }
                        catch (SQLException e3)
                        {
                            System.out.println("Erreur pour la suppression"); 
                            e3.printStackTrace(); 
                        }
                    }
    le compilateur ne trouve aucune erreur, mais lorsque je clique sur le bouton "supprimer", rien ne se passe, et voici l'erreur (au niveau des étoiles):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur de syntaxe dans l'expression 'num=$num_courant'
    pour info, la variable "num_courant" est déclaré en private static dans cette classe...

    aidez moi svp
    Juan

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Salut, ne confonds-tu pas PHP et Java ?
    C'est en PHP qu'on trouve des variables avec $.

    Il faut que tu fasses une concaténation pour que ça marche, quelque chose comme : "une chaine" + une_variable;
    K

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 288
    Points : 76
    Points
    76
    Par défaut
    j'ai essayé avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rep = supp.executeQuery("delete from Personne where num=" + num_courant);
    et voici l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Trop peu de paramètres. 1 attendu
    Juan

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 288
    Points : 76
    Points
    76
    Par défaut
    je précise que "rep" est un ResultSet et "supp" un Statement...
    Juan

  5. #5
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Salut, num_courant est bien un int dans ton programme java et un int dans ta base?
    Si c'est une chaine de caractère, tu dois mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rep = supp.executeQuery("delete from Personne where num='" + num_courant + "'");
    Sinon pour debugger, fait un copié/collé de ta requète dans ton sgbd et exécute la, le message d'erreur sera peut-être plus explicite.

  6. #6
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Sois plus explicite s'il te plait.
    Quel type d'erreur ? D'ou vient-elle ? A la compilation ?
    Une erreur de ta BDD ? ( ce que je suppose )

    Vérifies que num est un integer, si c'est un varchar, il faudra mettre ton numéro entre simples quotes.
    K

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 288
    Points : 76
    Points
    76
    Par défaut
    oui c'est bien un int dans la classe et dans la table...

    pour l'erreur complète :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    Erreur pour la suppression
    java.sql.SQLException: [Microsoft][Pilote ODBC dBase] Trop peu de paramètres. 1 attendu.
            at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
            at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
            at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)
            at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
            at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
            at projet_java.GestionPersonne.actionPerformed(GestionPersonne.java:245)
            at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
            at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
            at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
            at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
            at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)
            at java.awt.Component.processMouseEvent(Component.java:5100)
            at java.awt.Component.processEvent(Component.java:4897)
            at java.awt.Container.processEvent(Container.java:1569)
            at java.awt.Component.dispatchEventImpl(Component.java:3615)
            at java.awt.Container.dispatchEventImpl(Container.java:1627)
            at java.awt.Component.dispatchEvent(Component.java:3477)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
            at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
            at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
            at java.awt.Container.dispatchEventImpl(Container.java:1613)
            at java.awt.Window.dispatchEventImpl(Window.java:1606)
            at java.awt.Component.dispatchEvent(Component.java:3477)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
            at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    Juan

  8. #8
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Fais un print de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("delete from Personne where num=" + num_courant);
    Et vérifie que la requête est bonne, lance la à la main sur ta base, il n'y a que ça qui pose problème, peut-être un caractère alpha prasite au milieu de tout ça.
    K

  9. #9
    NGY
    NGY est déconnecté
    Membre habitué
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 164
    Points
    164
    Par défaut
    Et si tu utilisais un executeUpdate à la place de executeQuery ?
    Consulte la javadoc des Statement pour en savoir plus.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 288
    Points : 76
    Points
    76
    Par défaut
    ok pour le print, ça me renvoie bien le bon résultat... pour ce qui est de testé sur la table, en fait je n'y arrive pas, je travaille avec netBeans, et le SGBD est celui dans les outils d'administration de windows... JDBC:ODBC

    je ne vois vraiment pas pourquoi cette requête ne veut pas marcher!
    Juan

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 288
    Points : 76
    Points
    76
    Par défaut
    toute mes excuses, ce n'était pas "num" dans ma table mais "id"... par contre j'ai quand même une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     rep = supp.executeQuery("delete from Personne where id=" + num_courant);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur pour la suppression
    java.sql.SQLException: No ResultSet was produced
    Juan

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Points : 266
    Points
    266
    Par défaut
    Essayes la solution de NGY, c'est a priori la que ca plante...

    ExecuteQuery, c'est pour les selections, pour les mises a jour et les suppresions, bref, tout ce qui est de l'ordre de la modification de la base, c'est ExecuteUpdate...

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    Citation Envoyé par NGY
    Et si tu utilisais un executeUpdate à la place de executeQuery ?
    Consulte la javadoc des Statement pour en savoir plus.
    C'est tres juste !
    Essaye et dit nous comment ca se passe !!
    UML avec VIOLET

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 288
    Points : 76
    Points
    76
    Par défaut
    ok et est-ce que je peux abuser de votre aimabilité et vous demander de m'écrire ma requête en utilisant executeUpdate svp... je ne vois pas comment faire. merci d'avance
    Juan

  15. #15
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    meme chose qu'à présent, sauf que tu remplaces par executeUpdate

    PS : ça retourne un int.
    PS2 : Bien vu je pensais qu'avec executeQuery on pouvait executer n'importe quelle requête.. On en apprend tous les jours !
    K

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 288
    Points : 76
    Points
    76
    Par défaut
    ok merci
    Juan

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 288
    Points : 76
    Points
    76
    Par défaut
    pendant que j'y suis comment faut-il faire pour transformer un Strin en int??

    en fait je fais un textComponent.getText(), ce qui me donne un String, mais j'ai besoin d'avoir un Int, coment dois je faire?
    Juan

  18. #18
    Membre régulier Avatar de venegan
    Inscrit en
    Mars 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 72
    Points : 70
    Points
    70
    Par défaut
    met le tag resolu ca nous evite de lire ton poste !

    -EDIT-autant pour moi t avais pas finis mais n oublie pas quand meme

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 288
    Points : 76
    Points
    76
    Par défaut
    ça y est ma suppression marche!!

    une dernière chose (dsl mais j'en profite comme je vois que vous m'aidez!), je voudrais faire une requête me permettant de compter le nombre de ligne dans ma table... je n'ai aucune idée de comment faire.
    Juan

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Points : 568
    Points
    568
    Par défaut
    Citation Envoyé par chti_juanito
    ça y est ma suppression marche!!

    une dernière chose (dsl mais j'en profite comme je vois que vous m'aidez!), je voudrais faire une requête me permettant de compter le nombre de ligne dans ma table... je n'ai aucune idée de comment faire.
    peut etre que c'est ca que tu cherches :

    select count(*) from MATABLE



    pendant que j'y suis comment faut-il faire pour transformer un Strin en int??

    en fait je fais un textComponent.getText(), ce qui me donne un String, mais j'ai besoin d'avoir un Int, coment dois je faire?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int i = Integer.parseInt(maString);
    UML avec VIOLET

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 1234 DernièreDernière

Discussions similaires

  1. [SQL] erreur de syntaxe dans une requete
    Par einsteineuzzz dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 15/06/2006, 09h24
  2. Erreur syntaxe dans une recherche multicritère
    Par cigale13 dans le forum Access
    Réponses: 2
    Dernier message: 12/06/2006, 09h58
  3. [MySQL] probleme de syntaxe dans une requete sql
    Par jeanfrancois dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 28/03/2006, 10h54
  4. [JDBC]sauvegarde de session servlet/jsp dans une bd
    Par sheura dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 01/09/2005, 09h37
  5. Erreur de syntaxe dans une requete
    Par linou dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/08/2005, 12h44

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