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 :

Requête transfert table MySQL


Sujet :

JDBC Java

  1. #1
    Membre confirmé Avatar de stefan73
    Homme Profil pro
    Formateur : OpenOffice.org/LibreOffice
    Inscrit en
    Mai 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Formateur : OpenOffice.org/LibreOffice
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 105
    Par défaut Requête transfert table MySQL
    Bonjour,

    je rentre des données dans une table "T1" ensuite quand je valide la saisie il y un test pour savoir si les crédits et débits sont égaux ! jusqu'à la tout vas bien !

    s'ils sont égaux alors je transfert mes donnes dans une autre table "T2"... et je vous le donne en mille, c'est ici que se pose le problème.

    test et erreur !
    1
    c'est bon !
    2
    3
    Erreur : Anomalie lors de l'execution de la requête : java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
    GÉNÉRATION TERMINÉE (durée totale* 15 secondes)
    Et après une demi journée à essayer de voir le souci je ne suis pas capable d'y répondre !

    donc, je vous donne le bout de code pour voir si un de vous, aurais une idée pour me guider ?

    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
    32
    33
    34
    35
    36
    37
    38
    39
     
    Statement stmt =con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
                //garde en mémoire les lignes Résultant de l'éxecution de la requete
                ResultSet rs = stmt.executeQuery("select * from baseefs.totalht");
                //boucle sur les champs
                while (rs.next()) {
                    System.out.println("1");
                    Double montantHTDEB = rs.getDouble(1);
                    Double montantHTCRED = rs.getDouble(2);
                    Double diffe = montantHTDEB - montantHTCRED;
                    // test de l'égalité pour ensuite envoyer dans la table TCAchats.
                    if (montantHTDEB.equals(montantHTCRED)) {
                        System.out.println(" c'est bon !");
                        //affiche("creation et execution de la requête");
     
                        requete = "INSERT INTO TCAchats (Nchrono, idMenuConf, Compte, DateEmission, Libelle, Piece, Section, TTVA, MontantHTDeb, MontantTVADeb, MontantTTCDeb, MontantHTCred, MontantTVACred, MontantTTCCred, MPayement)"
                                                     + "SELECT (Nchrono, idMenuConf, Compte, DateEmission, Libelle, Piece, Section, TTVA, MontantHTDeb, MontantTVADeb, MontantTTCDeb, MontantHTCred, MontantTVACred, MontantTTCCred, MPayement) FROM TMPAchats"
                                + "VALUES ('" + jTnChrono.getText() + "','" + idmenuconf + "','" + jCombCompt.getSelectedItem() + "','" + sqlDate + "','" + jTlibaera.getText() + "','" + jTPiece.getText() + "','" + jTSect.getText() + "','" + toTva.toString() + "','" + jTMhtDeb.getText() + "','" + jTMTVADeb.getText() + "','" + jTMttcDeb.getText() + "','" + jTMhtCred.getText() + "','" + jTMTVACred.getText() + "','" + jTMttcCred.getText() + "','" + jCoMpaye.getSelectedItem() +"')";
     
                        System.out.println("2");
                        //requete = "INSERT IGNORE INTO baseefs.TMPAchats SELECT (Nchrono, idMenuConf, Compte, DateEmission, Libelle, Piece, Section, TTVA, MontantHTDeb, MontantTVADeb, MontantTTCDeb, MontantHTCred, MontantTVACred, MontantTTCCred, MPayement) FROM baseefs.TCAchats ";
                   try {
                        System.out.println("3");
                        //int maj = stmt.executeUpdate(requete);
                        ResultSet maj = stmt.executeQuery(requete);
                               System.out.println("4");               
     
                        } catch (SQLException e) {
                            System.out.println("Erreur : Anomalie lors de l'execution de la requête : " + e);
                        }
     
                    } else {
                        System.out.println(" Les montant ne sont pas égaux, veuillez corriger l'erreur avanr de valider !");
                        System.out.println(" Les montants  en Débit : " + montantHTDEB + " €" + ", en crédit :" + montantHTCRED + " €" + ", il y a une différence de : " + diffe + "€");
                    }
                }
            } catch (SQLException ex) {
                Logger.getLogger(Comptabilite.class.getName()).log(Level.SEVERE, null, ex);
            }

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Par défaut
    Lu,

    executeQuerry pour les requetes de "recherche"

    et executeUpdate pour les requetes "insert" et "update".

    donc ligne 25 : stmt.executeUpdate();

    A noter que tu n'as pas a le mettre dans un ResultSet puisque ce statement ne renverra rien (enfin tu pourrais lui faire renvoyer le nombre d'opérations que ton statement a provoqué mais c'est optionnel)

    J'espere que ca t'aideras.

  3. #3
    Membre confirmé Avatar de stefan73
    Homme Profil pro
    Formateur : OpenOffice.org/LibreOffice
    Inscrit en
    Mai 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Formateur : OpenOffice.org/LibreOffice
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 105
    Par défaut
    Merci pour ta réponse.

    j'avais aussi et j'ai oublié de le précisé, déjà fait cette manip et j'obtiens cette erreur ?

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    1
     c'est bon !
    2
    3
    7 oct. 2011 09:19:33 efs.ui.Comptabilite jBValEntreesActionPerformed
    Erreur : Anomalie lors de l'execution de la requête : 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 '('365','2','Item 1','2011-10-07','Projet E.F.Solution','1','3','19.6','0','0','0' at line 1
    GRAVE: null
    java.sql.SQLException: Operation not allowed after ResultSet closed
    	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
    	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
    	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
    	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:929)
    	at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:794)
    	at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:7145)
    	at com.mysql.jdbc.UpdatableResultSet.next(UpdatableResultSet.java:1164)
    	at efs.ui.Comptabilite.jBValEntreesActionPerformed(Comptabilite.java:742)
    	at efs.ui.Comptabilite.access$200(Comptabilite.java:33)
    	at efs.ui.Comptabilite$3.actionPerformed(Comptabilite.java:215)
    	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    	at java.awt.Component.processMouseEvent(Component.java:6288)
    	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    	at java.awt.Component.processEvent(Component.java:6053)
    	at java.awt.Container.processEvent(Container.java:2041)
    	at java.awt.Component.dispatchEventImpl(Component.java:4651)
    	at java.awt.Container.dispatchEventImpl(Container.java:2099)
    	at java.awt.Component.dispatchEvent(Component.java:4481)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
    	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    	at java.awt.Container.dispatchEventImpl(Container.java:2085)
    	at java.awt.Window.dispatchEventImpl(Window.java:2478)
    	at java.awt.Component.dispatchEvent(Component.java:4481)
    	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
    	at java.awt.EventQueue.access$000(EventQueue.java:84)
    	at java.awt.EventQueue$1.run(EventQueue.java:602)
    	at java.awt.EventQueue$1.run(EventQueue.java:600)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    	at java.awt.EventQueue$2.run(EventQueue.java:616)
    	at java.awt.EventQueue$2.run(EventQueue.java:614)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    	at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    j'ai l'impression que c'est le composant "jTextAera" qui fait le C**
    Car sur cette ligne il me manque des données ?

    '('365','2','Item 1','2011-10-07','Projet ','1','3','19.6','0','0','0' at line 1
    Si vous avez une idée ?

  4. #4
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Je ne comprend pas bien la syntaxe de ton insert (c'est peut-être une bizarrerie MySQL) : tu fais du INSERT INTO ... SELECT ... VALUES ...
    Le select ou le values est de trop, non ?

  5. #5
    SLE
    SLE est déconnecté
    Membre émérite Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Par défaut
    Oui, effectivement.
    Soit c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO (...) VALUES ...
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO (...) select ...
    mais les 2 en même temps ça va pas !

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Par défaut
    Il me semble que tu oublies les ; à la fin de tes requètes sql

  7. #7
    Membre confirmé Avatar de stefan73
    Homme Profil pro
    Formateur : OpenOffice.org/LibreOffice
    Inscrit en
    Mai 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Formateur : OpenOffice.org/LibreOffice
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 105
    Par défaut
    Merci pour vos réponses. je vais essayer de changer ma requête

  8. #8
    Membre confirmé Avatar de stefan73
    Homme Profil pro
    Formateur : OpenOffice.org/LibreOffice
    Inscrit en
    Mai 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Formateur : OpenOffice.org/LibreOffice
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 105
    Par défaut
    Bonjour,

    Je reviens vers vous car je n'arrive toujours pas e faire ce que je souhaite!

    Toujours le même soucis, cela fonctionne en ligne de commande dans Netbeans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT IGNORE INTO baseefs.TCAchats(Nchrono, idMenuConf, Compte, DateEmission, Libelle, Piece, Section, TTVA, MontantHTDeb, 
    MontantTVADeb, MontantTTCDeb, MontantHTCred, MontantTVACred, MontantTTCCred, MPayement) SELECT Nchrono, idMenuConf, Compte,
     DateEmission, Libelle, Piece, Section, TTVA, MontantHTDeb, MontantTVADeb, MontantTTCDeb, MontantHTCred, MontantTVACred, 
    MontantTTCCred, MPayement FROM baseefs.TMPAchats;
    Mais pas dans une requete
    en dessous un bout de 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
    20
    21
    22
    23
    while (rs.next()) {
                    System.out.println("1");
                    Double montantHTDEB = rs.getDouble(1);
                    Double montantHTCRED = rs.getDouble(2);
                    Double diffe = montantHTDEB - montantHTCRED;
                    // test de l'égalité pour ensuite envoyer dans la table TCAchats.
                    if (montantHTDEB.equals(montantHTCRED)) {
                        System.out.println(" c'est bon !");
                        //affiche("creation et execution de la requête");
     
                        requete = "SELECT (Nchrono, idMenuConf, Compte, DateEmission, Libelle, Piece, Section, TTVA, MontantHTDeb, MontantTVADeb, MontantTTCDeb, MontantHTCred, MontantTVACred, MontantTTCCred, MPayement) FROM TMPAchats"
                                + "INSERT INTO TCAchats (Nchrono, idMenuConf, Compte, DateEmission, Libelle, Piece, Section, TTVA, MontantHTDeb, MontantTVADeb, MontantTTCDeb, MontantHTCred, MontantTVACred, MontantTTCCred, MPayement)"
                                + "VALUES ('" + jTnChrono.getText() + "','" + idmenuconf + "','" + jCombCompt.getSelectedItem() + "','" + sqlDate + "','" + jTlibaera.getText() + "','" + jTPiece.getText() + "','" + jTSect.getText() + "','" + toTva.toString() + "','" + jTMhtDeb.getText() + "','" + jTMTVADeb.getText() + "','" + jTMttcDeb.getText() + "','" + jTMhtCred.getText() + "','" + jTMTVACred.getText() + "','" + jTMttcCred.getText() + "','" + jCoMpaye.getSelectedItem() +"')";
     
                        System.out.println("2");
                   try {
                        System.out.println("3");
     
                        ResultSet maj = stmt.executeQuery(requete);
                               System.out.println("4");     
                        } catch (SQLException e) {
                            System.out.println("Erreur : Anomalie lors de l'execution de la requête : " + e);
                        }
    si vous avez une tite idée ?

  9. #9
    SLE
    SLE est déconnecté
    Membre émérite Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Par défaut
    Il peut y avoir un problème lors de la concaténation. Si une chaine contient par exemple une apostrophe, la chaine SQL sera mal formatée et il y aura plantage. Vous passez également des dates et des nombres sous forme de chaines, qui ne sont peut-être pas dans le bon format.

    Je ne suis pas un spécialiste java, mais j'imagine qu'il existe également la possibilité d'utiliser des requêtes paramétrées comme dans d'autres langages, et je vous conseillerais vivement cette technique plutôt que de construire vos requêtes à la volée.

  10. #10
    Membre confirmé Avatar de stefan73
    Homme Profil pro
    Formateur : OpenOffice.org/LibreOffice
    Inscrit en
    Mai 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Formateur : OpenOffice.org/LibreOffice
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 105
    Par défaut
    j'ai comme message d'erreur !

    Erreur : Anomalie lors de l'execution de la requête : 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 TMPAchatsINSERT INTO TCAchats (Nchrono, idMenuConf, Compte, DateEmission, L' at line 1
    Comme tu le suggère, il y a sûrement une erreur de syntaxe !

  11. #11
    SLE
    SLE est déconnecté
    Membre émérite Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Par défaut
    Oui il manque un espace entre le nom de la table du from et l'instruction INSERT qui suit.
    Maintenant je ne comprends pas très bien ce que tu essaies de faire... Pourquoi un select avant le insert dans cette requête ?

    A mon avis, tu dois d'abord faire un select puis récupérer les valeurs, puis faire ton insert après, mais dans ce cas avec 2 commandes séparées.

    Pourquoi ne pas faire alors un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into (champ1, champ2, ...) select ch1, ch2, ... from LaTable

  12. #12
    Membre confirmé Avatar de stefan73
    Homme Profil pro
    Formateur : OpenOffice.org/LibreOffice
    Inscrit en
    Mai 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Formateur : OpenOffice.org/LibreOffice
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 105
    Par défaut
    merci pour ton aide

    Ce que je veux faire, c'est dans une table (qui servirait de tables temporaires) écrire des données pour vérifier que les entrées et les sorties sont égales et si c'est le cas, de prendre les données et de les envoyer dans une autre table.

    c'est pour faire la comptabilité de ma tite entreprise

    Donc, il est vrai que je me casse un peu la tête sur cette requête mais je vais bien y arriver !
    En 1er je mets toutes mes débits et crédit et en cliquant sur le bouton "Prochain" pour chaque entrées, puis je clique sur le bouton "Valider les entrées" qui vérifié l'égalité du débit et crédit et fait le transfert.



    Ma requête en ligne sous Netbeans 7.1 qui fonctionne très bien !
    Images attachées Images attachées  

  13. #13
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2
    Par défaut
    Tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(requete);
    et poster le résultat stp ?

    Je pense que tu peux virer cette partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT (Nchrono, idMenuConf, Compte, DateEmission, Libelle, Piece, Section, TTVA, MontantHTDeb, MontantTVADeb, MontantTTCDeb, MontantHTCred, MontantTVACred, MontantTTCCred, MPayement) FROM TMPAchats"

  14. #14
    Membre confirmé Avatar de stefan73
    Homme Profil pro
    Formateur : OpenOffice.org/LibreOffice
    Inscrit en
    Mai 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Formateur : OpenOffice.org/LibreOffice
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 105
    Par défaut
    et voila !

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    1
     c est bon !
    INSERT INTO TMPAchats(Nchrono, idMenuConf, Compte, DateEmission, Libelle, Piece, Section, TTVA, MontantHTDeb, MontantTVADeb, MontantTTCDeb, MontantHTCred, MontantTVACred, MontantTTCCred, MPayement)VALUES ('365','2','Item 1','2011-11-08','Projet E.F.Solution','1','3','19.6','0','0','0','0','0','0','Chèque')
    2
    3
    Erreur : Anomalie lors de l execution de la requête : 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 'UPDATE (Nchrono, idMenuConf, Compte, DateEmission, Libelle, Piece, Section, TTVA' at line 1'
    8 nov. 2011 19:48:45 efs.ui.Comptabilite jBValEntreesActionPerformed
    GRAVE: null
    java.sql.SQLException: Operation not allowed after ResultSet closed
    	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
    	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
    	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
    	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:929)
    	at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:794)
    	at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:7145)
    	at com.mysql.jdbc.UpdatableResultSet.next(UpdatableResultSet.java:1164)
    	at efs.ui.Comptabilite.jBValEntreesActionPerformed(Comptabilite.java:744)
    	at efs.ui.Comptabilite.access$200(Comptabilite.java:33)
    	at efs.ui.Comptabilite$3.actionPerformed(Comptabilite.java:215)
    	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    	at java.awt.Component.processMouseEvent(Component.java:6288)
    	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    	at java.awt.Component.processEvent(Component.java:6053)
    	at java.awt.Container.processEvent(Container.java:2041)
    	at java.awt.Component.dispatchEventImpl(Component.java:4651)
    	at java.awt.Container.dispatchEventImpl(Container.java:2099)
    	at java.awt.Component.dispatchEvent(Component.java:4481)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
    	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    	at java.awt.Container.dispatchEventImpl(Container.java:2085)
    	at java.awt.Window.dispatchEventImpl(Window.java:2478)
    	at java.awt.Component.dispatchEvent(Component.java:4481)
    	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
    	at java.awt.EventQueue.access$000(EventQueue.java:84)
    	at java.awt.EventQueue$1.run(EventQueue.java:602)
    	at java.awt.EventQueue$1.run(EventQueue.java:600)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    	at java.awt.EventQueue$2.run(EventQueue.java:616)
    	at java.awt.EventQueue$2.run(EventQueue.java:614)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    	at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

  15. #15
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2
    Par défaut
    C'est peut-être pas ça, mais tu peux mettre un espace avant VALUES et réessayer.

  16. #16
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par kwakosaure Voir le message
    C'est peut-être pas ça, mais tu peux mettre un espace avant VALUES et réessayer.
    Dans tout les cas, pour une erreur de syntaxe de requête SQL, il faut mieux prendre le résultat de ton System.out.print() et tu mets cette requête dans ton client SQL pour voir où ça pète.

    Sinon, tu risques de poster toutes les deux minutes pour un espace en trop, un espace en moins, une virgule en trop, une virgule en moins, ...
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  17. #17
    Membre confirmé Avatar de stefan73
    Homme Profil pro
    Formateur : OpenOffice.org/LibreOffice
    Inscrit en
    Mai 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Formateur : OpenOffice.org/LibreOffice
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 105
    Par défaut
    J'avance un peu.
    j'ai mis une autre requête pour voir ... et il y a quand même une erreur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    10 nov. 2011 17:34:12 efs.ui.Comptabilite jBValEntreesActionPerformed
    GRAVE: null
    java.sql.SQLException: Operation not allowed after ResultSet closed
    Cela parle-t-il a quelqu'un ?

  18. #18
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par stefan73 Voir le message
    J'avance un peu.
    j'ai mis une autre requête pour voir ... et il y a quand même une erreur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    10 nov. 2011 17:34:12 efs.ui.Comptabilite jBValEntreesActionPerformed
    GRAVE: null
    java.sql.SQLException: Operation not allowed after ResultSet closed
    Cela parle-t-il a quelqu'un ?
    On peut avoir le code là où tu utilises executeQuery puis ton ResultSet. Tu as du avoir une ouverture d'un ResultSet après un autre sur le même Statement en oubliant de clore le premier ResultSet. En tout cas ceci est du à quelque chose se rapprochant de ça :

    Citation Envoyé par Oracle
    By default, only one ResultSet object per Statement object can be open at the same time. Therefore, if the reading of one ResultSet object is interleaved with the reading of another, each must have been generated by different Statement objects. All execution methods in the Statement interface implicitly close a statment's current ResultSet object if an open one exists.
    Source
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  19. #19
    Membre confirmé Avatar de stefan73
    Homme Profil pro
    Formateur : OpenOffice.org/LibreOffice
    Inscrit en
    Mai 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Formateur : OpenOffice.org/LibreOffice
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 105
    Par défaut
    En réponse...

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    // Bouton "valider les entrées"
        private void jBValEntreesActionPerformed(java.awt.event.ActionEvent evt) {                                             
            try {
                //creation et execution de la requête
                //Appel de la fonction calcul taux TVA
                String toTva = calcul(T);
     
                // pour afficher la date choisi par l'utilisateur
                java.util.Date DateChoix = jDateChooser1.getDate();//new java.util.Date();    
                SimpleDateFormat dateFormat = new SimpleDateFormat("dd MM yyyy", Locale.FRANCE);
                java.sql.Date sqlDate = new java.sql.Date(DateChoix.getTime());
                // l'insertion de la date par sqlDate est au format UK-US 
     
                jTogModifier.setText("Modification");
                String idmenuconf = jmenuIndex.getText();
                Connection con = SourceDonnees.getConnection();
                //Stocke et garde en mémoire la requete SQL
                Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
                //garde en mémoire les lignes Résultant de l'éxecution de la requete
                ResultSet rs = stmt.executeQuery("select * from baseefs.totalttc");
                //boucle sur les champs
                while (rs.next()) {
                    System.out.println("1");
                    Double montantttcDeb = rs.getDouble(1); // Création d'un variable pour le montant TTC en Débit
                    Double montantttcCred = rs.getDouble(2); // Création d'un variable pour le montant TTC en crédit
                    Double diffe = montantttcDeb - montantttcCred; // Calcul de la difference s'il y a 
                    // Faire un test d'égalité sur le montant ttc et fairte en sorte quand il y a de la TVA de l'afficher dans la case montant TVA  
                    // test de l'égalité pour ensuite envoyer dans la table TCAchats.
                    if (montantttcDeb.equals(montantttcCred)) {
                        System.out.println(" c'est bon !");
                        //affiche("creation et execution de la requête");
     
                        requete = "INSERT IGNORE INTO TCAchats (Nchrono, idMenuConf, Compte, DateEmission, Libelle, Piece, Section, TTVA, MontantHTDeb, MontantTVADeb, MontantTTCDeb, MontantHTCred, MontantTVACred, MontantTTCCred, MPayement)"
                                + " UPDATE (Nchrono, idMenuConf, Compte, DateEmission, Libelle, Piece, Section, TTVA, MontantHTDeb, MontantTVADeb, MontantTTCDeb, MontantHTCred, MontantTVACred, MontantTTCCred, MPayement )"
                                + " FROM TMPAchats ";
                               // + " VALUES ('" + jTnChrono.getText() + "','" + idmenuconf + "','" + jCombCompt.getSelectedItem() + "','" + sqlDate + "','" + jTlibaera.getText() + "','" + jTPiece.getText() + "','" + jTSect.getText() + "','" + toTva.toString() + "','" + jTMhtDeb.getText() + "','" + jTMTVADeb.getText() + "','" + jTMttcDeb.getText() + "','" + jTMhtCred.getText() + "','" + jTMTVACred.getText() + "','" + jTMttcCred.getText() + "','" + jCoMpaye.getSelectedItem() +"')";
                        System.out.println(requete);
                        //requete = "INSERT IGNORE INTO baseefs.TMPAchats SELECT (Nchrono, idMenuConf, Compte, DateEmission, Libelle, Piece, Section, TTVA, MontantHTDeb, MontantTVADeb, MontantTTCDeb, MontantHTCred, MontantTVACred, MontantTTCCred, MPayement) FROM baseefs.TCAchats ";
                   try {
                        System.out.println("2");
                        maj = stmt.executeUpdate(requete);
                               System.out.println("3");     
                        } catch (SQLException e) {
                            System.out.println("Erreur : Anomalie lors de l'execution de la requête : " + e);
                        }
     
                    } else {
                        System.out.println(" Les montant ne sont pas égaux, veuillez corriger l'erreur avant de valider !");
                        System.out.println(" Les montants en Débit : " + montantttcDeb + " €" + ", en crédit :" + montantttcCred + " €" + ", il y a une différence de : " + diffe + "€");
                    }
                }
            } catch (SQLException ex) {
                Logger.getLogger(Comptabilite.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

  20. #20
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par stefan73 Voir le message
    En réponse...

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    // Bouton "valider les entrées"
        private void jBValEntreesActionPerformed(java.awt.event.ActionEvent evt) {                                             
            try {
                //creation et execution de la requête
                //Appel de la fonction calcul taux TVA
                String toTva = calcul(T);
    
                // pour afficher la date choisi par l'utilisateur
                java.util.Date DateChoix = jDateChooser1.getDate();//new java.util.Date();    
                SimpleDateFormat dateFormat = new SimpleDateFormat("dd MM yyyy", Locale.FRANCE);
                java.sql.Date sqlDate = new java.sql.Date(DateChoix.getTime());
                // l'insertion de la date par sqlDate est au format UK-US 
    
                jTogModifier.setText("Modification");
                String idmenuconf = jmenuIndex.getText();
                Connection con = SourceDonnees.getConnection();
                //Stocke et garde en mémoire la requete SQL
                Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
                //garde en mémoire les lignes Résultant de l'éxecution de la requete
                ResultSet rs = stmt.executeQuery("select * from baseefs.totalttc");
                //boucle sur les champs
                while (rs.next()) {
                    System.out.println("1");
                    Double montantttcDeb = rs.getDouble(1); // Création d'un variable pour le montant TTC en Débit
                    Double montantttcCred = rs.getDouble(2); // Création d'un variable pour le montant TTC en crédit
                    Double diffe = montantttcDeb - montantttcCred; // Calcul de la difference s'il y a 
                    // Faire un test d'égalité sur le montant ttc et fairte en sorte quand il y a de la TVA de l'afficher dans la case montant TVA  
                    // test de l'égalité pour ensuite envoyer dans la table TCAchats.
                    if (montantttcDeb.equals(montantttcCred)) {
                        System.out.println(" c'est bon !");
                        //affiche("creation et execution de la requête");
                        
                        requete = "INSERT IGNORE INTO TCAchats (Nchrono, idMenuConf, Compte, DateEmission, Libelle, Piece, Section, TTVA, MontantHTDeb, MontantTVADeb, MontantTTCDeb, MontantHTCred, MontantTVACred, MontantTTCCred, MPayement)"
                                + " UPDATE (Nchrono, idMenuConf, Compte, DateEmission, Libelle, Piece, Section, TTVA, MontantHTDeb, MontantTVADeb, MontantTTCDeb, MontantHTCred, MontantTVACred, MontantTTCCred, MPayement )"
                                + " FROM TMPAchats ";
                               // + " VALUES ('" + jTnChrono.getText() + "','" + idmenuconf + "','" + jCombCompt.getSelectedItem() + "','" + sqlDate + "','" + jTlibaera.getText() + "','" + jTPiece.getText() + "','" + jTSect.getText() + "','" + toTva.toString() + "','" + jTMhtDeb.getText() + "','" + jTMTVADeb.getText() + "','" + jTMttcDeb.getText() + "','" + jTMhtCred.getText() + "','" + jTMTVACred.getText() + "','" + jTMttcCred.getText() + "','" + jCoMpaye.getSelectedItem() +"')";
                        System.out.println(requete);
                        //requete = "INSERT IGNORE INTO baseefs.TMPAchats SELECT (Nchrono, idMenuConf, Compte, DateEmission, Libelle, Piece, Section, TTVA, MontantHTDeb, MontantTVADeb, MontantTTCDeb, MontantHTCred, MontantTVACred, MontantTTCCred, MPayement) FROM baseefs.TCAchats ";
                   try {
                        System.out.println("2");
                        maj = stmt.executeUpdate(requete);
                               System.out.println("3");     
                        } catch (SQLException e) {
                            System.out.println("Erreur : Anomalie lors de l'execution de la requête : " + e);
                        }
    
                    } else {
                        System.out.println(" Les montant ne sont pas égaux, veuillez corriger l'erreur avant de valider !");
                        System.out.println(" Les montants en Débit : " + montantttcDeb + " €" + ", en crédit :" + montantttcCred + " €" + ", il y a une différence de : " + diffe + "€");
                    }
                }
            } catch (SQLException ex) {
                Logger.getLogger(Comptabilite.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    Alors de ce que je vois, c'est bien en accord avec ce que je t'ai montré au dessus.

    C'est plus un problème de conception de ton code là, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
    Puis ensuite, tu lance ta première requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //garde en mémoire les lignes Résultant de l'éxecution de la requete
    ResultSet rs = stmt.executeQuery("select * from baseefs.totalttc");
    Et encore ensuite, tu fais à l'intérieur de ta boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maj = stmt.executeUpdate(requete);
    Tu utilises donc deux ResultSet sur le Statement. Il te faudrait relacher le premier ResultSet pour entreprendre ta deuxième requête via un :
    Sauf que vu ton code, tu vas devoir revoir ton architecture de code car tu as un ResultSet imbriqué dans un autre.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

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

Discussions similaires

  1. [3.5] Requête sur table mysql créée manuellement
    Par anfalsh dans le forum WordPress
    Réponses: 1
    Dernier message: 29/04/2013, 18h24
  2. Transfert de table MySQL
    Par Azharis dans le forum Administration
    Réponses: 3
    Dernier message: 22/01/2009, 12h43
  3. Requête et liens entre tables MySQL
    Par kaking dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 09/11/2008, 09h23
  4. Requête Ajout depuis une table MySQL
    Par zlatan13 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 27/08/2008, 10h59
  5. La taille d'une table MySQL ralentit-elle les requêtes?
    Par steenbock dans le forum Requêtes
    Réponses: 2
    Dernier message: 12/01/2007, 14h41

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