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 de modification


Sujet :

JDBC Java

  1. #1
    Membre régulier Avatar de JTABLE
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 164
    Points : 112
    Points
    112
    Par défaut Problème de modification
    salut
    J'ai une table (boite) dans ma base de données(access) et je veut modifier une boite mais la requette du mise à jour sa marche pas .
    voila le 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
     
    int auto = Integer.parseInt(ss.boit2[qss.tab.getSelectedRow()][6]);
    String url = "jdbc:odbc:dw1";
       Connection con = null;
       try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            con = DriverManager.getConnection(url,"","");
            Statement requete = con.createStatement();
            ResultSet resultatDest = requete.executeQuery("UPDATE	 boite   SET    n_boite='"+nn_box.getText()+"',nom_boite='"+nnom_box.getText()+"',type='"+tt_box.getSelectedItem()+"',date_crea='"+dd_box.getText()+"',coleur='"+cc_box.getSelectedItem()+"'WHERE [n_autob]='"+auto+"' ");
     
           }
      catch(Exception ee) {  System.out.println("Exception");  }
      finally {
         try {con.close();}
        catch(SQLException ee) {ee.printStackTrace();}
        }
    merci d'aavnce.

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 318
    Points
    8 318
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    Pourquoi utilise tu un "executeQuery" à la place d'un "executeUpdate" pour ta requête ?

    As-tu tenter un affichage de la requête en elle-même ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("UPDATE	 boite   SET    n_boite='"+nn_box.getText()+"',nom_boite='"+nnom_box.getText()+"',type='"+tt_box.getSelectedItem()+"',date_crea='"+dd_box.getText()+"',coleur='"+cc_box.getSelectedItem()+"'WHERE [n_autob]='"+auto+"' ");
    Pour pouvoir voir si elle fonctionne en l’exécutant manuellement sur ta base de donnée.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Membre régulier Avatar de JTABLE
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 164
    Points : 112
    Points
    112
    Par défaut
    salut

    quand j'utilise executeUPDATE à la place de executeQuery il m'affiche une erreur : incompatible type.

    l'affichage du ma requête me donne:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE   boite   SET    n_boite='3',nom_boite='demande2005',type='demmande',date_crea='2015-05-02 00:00:00',coleur='bleu 'WHERE [n_autob]='40'
    et c'est correcte.

    l''exécution du la requête m'affiche : exception.
    est ce que le syntaxe de ma requête est juste ?

  4. #4
    Membre régulier Avatar de JTABLE
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 164
    Points : 112
    Points
    112
    Par défaut
    voila l'exception qu'il m'affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    [Microsoft][Pilote ODBC Microsoft Access] Trop peu de paramètres. 1 attendu.
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
        at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
        at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)

  5. #5
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Il y a au minimum une erreur de syntaxe près du WHERE : il manque un espace entre ' et WHERE.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  6. #6
    Membre régulier Avatar de JTABLE
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 164
    Points : 112
    Points
    112
    Par défaut
    j'ai laisser un espace entre le ' et le WHERE mais toujours la même exception s'affiche.

  7. #7
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 318
    Points
    8 318
    Billets dans le blog
    52
    Par défaut
    Sachant que tu n'es pas obliger dans un phase de debug de setter tout les paramètres avec ta requête tu pourrai tester les requêtes suivantes :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    UPDATE   boite   SET    nom_boite='demande2005' WHERE n_autob='40'
    UPDATE   boite   SET   type='demmande' WHERE n_autob='40'
    UPDATE   boite   SET   date_crea='2015-05-02 00:00:00' WHERE n_autob='40'
    UPDATE   boite   SET    coleur='bleu' WHERE n_autob='40'
    UPDATE   boite   SET    n_boite='3' WHERE [n_autob]='40'
    Et SI ta base de donnée n'a pas d'importance pour le moment :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE   boite   SET    n_boite='3',nom_boite='demande2005',type='demmande',date_crea='2015-05-02 00:00:00',coleur='bleu'

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  8. #8
    Membre régulier Avatar de JTABLE
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 164
    Points : 112
    Points
    112
    Par défaut
    pour les premiers requêtes sa marche très bien mais avec l'affichage du l'exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.SQLException: No ResultSet was produced
    et pour la requete :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE   boite   SET    n_boite='3',nom_boite='demande2005',type='demmande',date_crea='2015-05-02 00:00:00',coleur='bleu'
    sa marche pas et affiche toujours l'exception:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       java.sql.SQLException: [Microsoft][Pilote ODBC Microsoft Access]Trop peu de paramètres. 1 attendu.

  9. #9
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 318
    Points
    8 318
    Billets dans le blog
    52
    Par défaut
    pour les premiers requêtes sa marche très bien mais avec l'affichage du l'exception :
    Normal, tu réalise une Query à la place d'un Update.

    Tente de reconstruire ta requête en ajoutant un a un les paramètres.

    Cordialement,
    Patrick Kolodziejcyzk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  10. #10
    Membre régulier Avatar de JTABLE
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 164
    Points : 112
    Points
    112
    Par défaut
    En ajoutant les paramétres un a un j'ai trouvé que le problème est dans la requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE   boite   SET   date_crea='2015-05-02 00:00:00' WHERE n_autob='40'
    j'ai changer le type du champ date_crea en Text mais toujours le même problème.

  11. #11
    Membre régulier Avatar de JTABLE
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 164
    Points : 112
    Points
    112
    Par défaut
    j'ai trouver l'origine du l'erreur c'est trés béte les noms dans la bd et dans la requete ne se correspond pas .
    maintenant la requete marche trés bien mais toujours j'ai l'exception suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java.sql.SQLException: No ResultSet was produced

  12. #12
    Membre régulier Avatar de JTABLE
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 164
    Points : 112
    Points
    112
    Par défaut
    j'ai pas trouver l'origine du cette exception.

  13. #13
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 084
    Points
    7 084
    Par défaut
    Il ne faut pas faire utiliser executeQuery(String), mais executeUpdate(String).
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  14. #14
    Membre régulier Avatar de JTABLE
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 164
    Points : 112
    Points
    112
    Par défaut
    Citation Envoyé par Nemek Voir le message
    Il ne faut pas faire utiliser executeQuery(String), mais executeUpdate(String).
    l'erreur suivante s'affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    incompatible types
    found   : int
    required: java.sql.ResultSet
           ResultSet resultatSet = requete.executeUpdate ("UPDATE    boite   SET    n_boite='"+nn_box.getText()+"',nom_boite='"+nnom_box.getText()+"',type='"+tt_box.getSelectedItem()+"' ,date_crea='"+dd_box.getText()+"',coleur='"+cc_box.getSelectedItem()+"'  WHERE [n_autob]="+auto+" ");
                                                         ^

  15. #15
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 084
    Points
    7 084
    Par défaut
    Comment dire ... La méthode renvoie un "int" et toi tu demandes un "java.sql.ResultSet".

    Je dirais qu'il faut enlever la variable "resultatset" ...
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  16. #16
    Membre expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut Bonjour
    Je penses que le problème se trouve au niveau du statement. En effet, vous le créez à l'aide de la méthode sans paramètres de votre instance de Connection. D'après la documentation Java, un Statement ainsi créé est formaté en avant seulement et en lecture seule. C'est certainement pour cette raison que vous obtenez une erreur d'exécution avec la méthode executeUpdate puisque le Statement utilisé est en lecture seule. En contrepartie, executeQuery n'accepte que les requetes SELECT il me semble. Quand au résultat d'un Update, il ne peut être qu'entier et représente le nombre d'enregistrements modifiés. S'il vaut 0 c'est que rien n'a été modifié.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  17. #17
    Membre régulier Avatar de JTABLE
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 164
    Points : 112
    Points
    112
    Par défaut
    merci.sa marche trés bien maintenant ma requete devrais étre comme sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    requete.executeUpdate ("UPDATE 	 boite   SET    n_boite='"+nn_box.getText()+"',nom_boite='"+nnom_box.getText()+"',type='"+tt_box.getSelectedItem()+"' ,date_crea='"+dd_box.getText()+"',coleur='"+cc_box.getSelectedItem()+"'  WHERE [n_autob]="+auto+" ");

  18. #18
    Membre régulier Avatar de JTABLE
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 164
    Points : 112
    Points
    112
    Par défaut
    il fallait enlever ResultSet.
    encore merci.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/03/2006, 18h14
  2. [vb6 et access] problème de modification de contenu de champ
    Par dj_tess dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 22/12/2005, 19h26
  3. [IShellLink] Problème de modification de raccourci
    Par Alcatîz dans le forum Windows
    Réponses: 2
    Dernier message: 17/11/2005, 09h39
  4. Réponses: 19
    Dernier message: 28/10/2005, 17h29
  5. [débutant] Problème JSplitPane (modif :InternalFrame)
    Par pingoui dans le forum Agents de placement/Fenêtres
    Réponses: 61
    Dernier message: 03/09/2004, 17h01

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