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 :

NetBeans ne m'affiche pas le contenu de ma table : problème ODBC


Sujet :

JDBC Java

  1. #201
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    Non c'est le truc si tu prends pas tu meurs !

    Ca ne fonctionne pas avec Alt+F7 (0 occurrence)

    Sinon click droit sur le projet => Find => ajouter

    Attention les yeux :
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    org.netbeans.modules.search.ResultTreeModel@1a77f9[Found 30 match(es) in 10 file(s).]
    org.netbeans.modules.search.MatchingObject@883182[Societe.java]
    org.netbeans.modules.search.TextDetail$DetailNode@1c26431[Name=    /* Méthode permettant d'ajouter un sous-traitant */      [position 293:29], displayName=    /* Méthode permettant d'ajouter un sous-traitant */      [position 293:29]]
    org.netbeans.modules.search.MatchingObject@f5a498[ChargeAffaire.java]
    org.netbeans.modules.search.TextDetail$DetailNode@ccc2c6[Name=     /* Méthode permettant d'ajouter un chargé d'affaires dans la base de données */      [position 178:30], displayName=     /* Méthode permettant d'ajouter un chargé d'affaires dans la base de données */      [position 178:30]]
    org.netbeans.modules.search.MatchingObject@871ef4[Fenetre.properties]
    org.netbeans.modules.search.TextDetail$DetailNode@f54dd2[Name=jButtonAjoutSousTraitant.text=Ajouter un sous-traitant      [position 77:31], displayName=jButtonAjoutSousTraitant.text=Ajouter un sous-traitant      [position 77:31]]
    org.netbeans.modules.search.TextDetail$DetailNode@c80405[Name=jButtonAjouterST.text=Ajouter      [position 84:8], displayName=jButtonAjouterST.text=Ajouter      [position 84:8]]
    org.netbeans.modules.search.TextDetail$DetailNode@17fda68[Name=jButtonAjouterST.text=Ajouter      [position 84:23], displayName=jButtonAjouterST.text=Ajouter      [position 84:23]]
    org.netbeans.modules.search.TextDetail$DetailNode@dbc0c3[Name=jButtonAjoutCharge.text=Ajouter      [position 143:25], displayName=jButtonAjoutCharge.text=Ajouter      [position 143:25]]
    org.netbeans.modules.search.TextDetail$DetailNode@14c3343[Name=jButtonAjoutSocieteAdmin.text=Ajouter      [position 167:31], displayName=jButtonAjoutSocieteAdmin.text=Ajouter      [position 167:31]]
    org.netbeans.modules.search.TextDetail$DetailNode@1b957a7[Name=jButtonAjoutCCAdmin.text=Ajouter      [position 170:26], displayName=jButtonAjoutCCAdmin.text=Ajouter      [position 170:26]]
    org.netbeans.modules.search.TextDetail$DetailNode@12968b1[Name=jButtonAjouterZone.text= Ajouter Zone      [position 217:8], displayName=jButtonAjouterZone.text= Ajouter Zone      [position 217:8]]
    org.netbeans.modules.search.TextDetail$DetailNode@1981f50[Name=jButtonAjouterZone.text= Ajouter Zone      [position 217:26], displayName=jButtonAjouterZone.text= Ajouter Zone      [position 217:26]]
    org.netbeans.modules.search.TextDetail$DetailNode@2fb4c6[Name=jButtonAjouterInstallation.text=Ajouter Installation      [position 220:8], displayName=jButtonAjouterInstallation.text=Ajouter Installation      [position 220:8]]
    org.netbeans.modules.search.TextDetail$DetailNode@52901[Name=jButtonAjouterInstallation.text=Ajouter Installation      [position 220:33], displayName=jButtonAjouterInstallation.text=Ajouter Installation      [position 220:33]]
    org.netbeans.modules.search.MatchingObject@1e870bc[CoActivite2View.properties]
    org.netbeans.modules.search.TextDetail$DetailNode@494c14[Name=jButton3.text=Ajouter un risque      [position 65:15], displayName=jButton3.text=Ajouter un risque      [position 65:15]]
    org.netbeans.modules.search.TextDetail$DetailNode@21b42b[Name=jButton2.text=Ajouter une soci\u00E9t\u00E9      [position 83:15], displayName=jButton2.text=Ajouter une soci\u00E9t\u00E9      [position 83:15]]
    org.netbeans.modules.search.MatchingObject@1a54606[ChefChantier.java]
    org.netbeans.modules.search.TextDetail$DetailNode@10ee4ea[Name=    /* Méthode permettant d'ajouter un chef de chantiers dans le panneau d'administration */      [position 138:29], displayName=    /* Méthode permettant d'ajouter un chef de chantiers dans le panneau d'administration */      [position 138:29]]
    org.netbeans.modules.search.MatchingObject@318fbf[Annexe.java]
    org.netbeans.modules.search.TextDetail$DetailNode@146462f[Name=    /* Méthode permettant d'ajouter une annexe dans la base de données */      [position 168:29], displayName=    /* Méthode permettant d'ajouter une annexe dans la base de données */      [position 168:29]]
    org.netbeans.modules.search.MatchingObject@5acebc[Installation.java]
    org.netbeans.modules.search.TextDetail$DetailNode@2ca7f4[Name=    /* Méthode permettant d'ajouter une installation dans la base de données */      [position 63:29], displayName=    /* Méthode permettant d'ajouter une installation dans la base de données */      [position 63:29]]
    org.netbeans.modules.search.MatchingObject@133d1e1[Zone.java]
    org.netbeans.modules.search.TextDetail$DetailNode@1f18c08[Name=    /* Méthode permettant d'ajouter une zone dans la base de données */      [position 133:29], displayName=    /* Méthode permettant d'ajouter une zone dans la base de données */      [position 133:29]]
    org.netbeans.modules.search.MatchingObject@ebc2a3[Fenetre.java]
    org.netbeans.modules.search.TextDetail$DetailNode@1bb9c2c[Name=        jButtonAjouterST = new javax.swing.JButton();      [position 105:16], displayName=        jButtonAjouterST = new javax.swing.JButton();      [position 105:16]]
    org.netbeans.modules.search.TextDetail$DetailNode@9ecc5[Name=        jButtonAjouterInstallation = new javax.swing.JButton();      [position 614:16], displayName=        jButtonAjouterInstallation = new javax.swing.JButton();      [position 614:16]]
    org.netbeans.modules.search.TextDetail$DetailNode@19739ef[Name=        jButtonAjouterZone = new javax.swing.JButton();      [position 615:16], displayName=        jButtonAjouterZone = new javax.swing.JButton();      [position 615:16]]
    org.netbeans.modules.search.TextDetail$DetailNode@15c4c91[Name=        jButtonAjouterST.setText(resourceMap.getString("jButtonAjouterST.text")); // NOI18N      [position 986:16], displayName=        jButtonAjouterST.setText(resourceMap.getString("jButtonAjouterST.text")); // NOI18N      [position 986:16]]
    org.netbeans.modules.search.TextDetail$DetailNode@a69f5c[Name=        jButtonAjouterST.setText(resourceMap.getString("jButtonAjouterST.text")); // NOI18N      [position 986:64], displayName=        jButtonAjouterST.setText(resourceMap.getString("jButtonAjouterST.text")); // NOI18N      [position 986:64]]
    org.netbeans.modules.search.TextDetail$DetailNode@1283ddc[Name=        jButtonAjouterST.addActionListener(new java.awt.event.ActionListener() {      [position 987:16], displayName=        jButtonAjouterST.addActionListener(new java.awt.event.ActionListener() {      [position 987:16]]
    org.netbeans.modules.search.TextDetail$DetailNode@f52ee8[Name=                jButtonAjouterSTActionPerformed(evt);      [position 989:24], displayName=                jButtonAjouterSTActionPerformed(evt);      [position 989:24]]
    org.netbeans.modules.search.TextDetail$DetailNode@da444a[Name=                        .addComponent(jButtonAjouterST, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE))      [position 1042:46], displayName=                        .addComponent(jButtonAjouterST, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE))      [position 1042:46]]
    org.netbeans.modules.search.TextDetail$DetailNode@1b9215f[Name=                .addComponent(jButtonAjouterST, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)      [position 1110:38], displayName=                .addComponent(jButtonAjouterST, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)      [position 1110:38]]
    org.netbeans.modules.search.TextDetail$DetailNode@13db39f[Name=        jButtonAjouterInstallation.setText(resourceMap.getString("jButtonAjouterInstallation.text")); // NOI18N      [position 5014:16], displayName=        jButtonAjouterInstallation.setText(resourceMap.getString("jButtonAjouterInstallation.text")); // NOI18N      [position 5014:16]]
    org.netbeans.modules.search.TextDetail$DetailNode@1db4ab5[Name=        jButtonAjouterInstallation.setText(resourceMap.getString("jButtonAjouterInstallation.text")); // NOI18N      [position 5014:74], displayName=        jButtonAjouterInstallation.setText(resourceMap.getString("jButtonAjouterInstallation.text")); // NOI18N      [position 5014:74]]
    org.netbeans.modules.search.TextDetail$DetailNode@5aded[Name=        jButtonAjouterInstallation.setMaximumSize(new java.awt.Dimension(140, 23));      [position 5015:16], displayName=        jButtonAjouterInstallation.setMaximumSize(new java.awt.Dimension(140, 23));      [position 5015:16]]
    org.netbeans.modules.search.TextDetail$DetailNode@dd7789[Name=        jButtonAjouterInstallation.setMinimumSize(new java.awt.Dimension(140, 23));      [position 5016:16], displayName=        jButtonAjouterInstallation.setMinimumSize(new java.awt.Dimension(140, 23));      [position 5016:16]]
    org.netbeans.modules.search.TextDetail$DetailNode@1d296ae[Name=        jButtonAjouterInstallation.setPreferredSize(new java.awt.Dimension(140, 23));      [position 5017:16], displayName=        jButtonAjouterInstallation.setPreferredSize(new java.awt.Dimension(140, 23));      [position 5017:16]]
    org.netbeans.modules.search.TextDetail$DetailNode@a26b0f[Name=        jButtonAjouterInstallation.addActionListener(new java.awt.event.ActionListener() {      [position 5018:16], displayName=        jButtonAjouterInstallation.addActionListener(new java.awt.event.ActionListener() {      [position 5018:16]]
    org.netbeans.modules.search.TextDetail$DetailNode@1226fbf[Name=                jButtonAjouterInstallationActionPerformed(evt);      [position 5020:24], displayName=                jButtonAjouterInstallationActionPerformed(evt);      [position 5020:24]]
    org.netbeans.modules.search.TextDetail$DetailNode@1d62387[Name=        jSplitPane3.setRightComponent(jButtonAjouterInstallation);      [position 5023:46], displayName=        jSplitPane3.setRightComponent(jButtonAjouterInstallation);      [position 5023:46]]
    org.netbeans.modules.search.TextDetail$DetailNode@1b671ef[Name=        jButtonAjouterZone.setText(resourceMap.getString("jButtonAjouterZone.text")); // NOI18N      [position 5025:16], displayName=        jButtonAjouterZone.setText(resourceMap.getString("jButtonAjouterZone.text")); // NOI18N      [position 5025:16]]
    org.netbeans.modules.search.TextDetail$DetailNode@f1d4a1[Name=        jButtonAjouterZone.setText(resourceMap.getString("jButtonAjouterZone.text")); // NOI18N      [position 5025:66], displayName=        jButtonAjouterZone.setText(resourceMap.getString("jButtonAjouterZone.text")); // NOI18N      [position 5025:66]]
    org.netbeans.modules.search.TextDetail$DetailNode@be729c[Name=        jButtonAjouterZone.setMaximumSize(new java.awt.Dimension(140, 23));      [position 5026:16], displayName=        jButtonAjouterZone.setMaximumSize(new java.awt.Dimension(140, 23));      [position 5026:16]]
    org.netbeans.modules.search.TextDetail$DetailNode@1564ca9[Name=        jButtonAjouterZone.setMinimumSize(new java.awt.Dimension(140, 23));      [position 5027:16], displayName=        jButtonAjouterZone.setMinimumSize(new java.awt.Dimension(140, 23));      [position 5027:16]]
    org.netbeans.modules.search.TextDetail$DetailNode@c2b070[Name=        jButtonAjouterZone.setPreferredSize(new java.awt.Dimension(140, 23));      [position 5028:16], displayName=        jButtonAjouterZone.setPreferredSize(new java.awt.Dimension(140, 23));      [position 5028:16]]
    org.netbeans.modules.search.TextDetail$DetailNode@1cd562a[Name=        jButtonAjouterZone.addActionListener(new java.awt.event.ActionListener() {      [position 5029:16], displayName=        jButtonAjouterZone.addActionListener(new java.awt.event.ActionListener() {      [position 5029:16]]
    org.netbeans.modules.search.TextDetail$DetailNode@1d3b74b[Name=                jButtonAjouterZoneActionPerformed(evt);      [position 5031:24], displayName=                jButtonAjouterZoneActionPerformed(evt);      [position 5031:24]]
    org.netbeans.modules.search.TextDetail$DetailNode@a66b9a[Name=        jSplitPane3.setLeftComponent(jButtonAjouterZone);      [position 5034:45], displayName=        jSplitPane3.setLeftComponent(jButtonAjouterZone);      [position 5034:45]]
    org.netbeans.modules.search.TextDetail$DetailNode@1e20c32[Name=    private void jButtonAjouterSTActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAjouterSTActionPerformed      [position 5595:25], displayName=    private void jButtonAjouterSTActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAjouterSTActionPerformed      [position 5595:25]]
    org.netbeans.modules.search.TextDetail$DetailNode@18e8add[Name=    private void jButtonAjouterSTActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAjouterSTActionPerformed      [position 5595:108], displayName=    private void jButtonAjouterSTActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAjouterSTActionPerformed      [position 5595:108]]
    org.netbeans.modules.search.TextDetail$DetailNode@13e7d9a[Name=}//GEN-LAST:event_jButtonAjouterSTActionPerformed      [position 5619:26], displayName=}//GEN-LAST:event_jButtonAjouterSTActionPerformed      [position 5619:26]]
    org.netbeans.modules.search.TextDetail$DetailNode@1a7cfa1[Name=    private void jButtonAjouterInstallationActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAjouterInstallationActionPerformed      [position 5853:25], displayName=    private void jButtonAjouterInstallationActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAjouterInstallationActionPerformed      [position 5853:25]]
    org.netbeans.modules.search.TextDetail$DetailNode@303a3c[Name=    private void jButtonAjouterInstallationActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAjouterInstallationActionPerformed      [position 5853:118], displayName=    private void jButtonAjouterInstallationActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAjouterInstallationActionPerformed      [position 5853:118]]
    org.netbeans.modules.search.TextDetail$DetailNode@3f00d2[Name=    }//GEN-LAST:event_jButtonAjouterInstallationActionPerformed      [position 5855:30], displayName=    }//GEN-LAST:event_jButtonAjouterInstallationActionPerformed      [position 5855:30]]
    org.netbeans.modules.search.TextDetail$DetailNode@4ea7d4[Name=    private void jButtonAjouterZoneActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAjouterZoneActionPerformed      [position 5891:25], displayName=    private void jButtonAjouterZoneActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAjouterZoneActionPerformed      [position 5891:25]]
    org.netbeans.modules.search.TextDetail$DetailNode@1ec4533[Name=    private void jButtonAjouterZoneActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAjouterZoneActionPerformed      [position 5891:110], displayName=    private void jButtonAjouterZoneActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAjouterZoneActionPerformed      [position 5891:110]]
    org.netbeans.modules.search.TextDetail$DetailNode@b2e5fe[Name=    }//GEN-LAST:event_jButtonAjouterZoneActionPerformed      [position 5893:30], displayName=    }//GEN-LAST:event_jButtonAjouterZoneActionPerformed      [position 5893:30]]
    org.netbeans.modules.search.TextDetail$DetailNode@1196e70[Name=    javax.swing.JButton jButtonAjouterInstallation;      [position 7253:32], displayName=    javax.swing.JButton jButtonAjouterInstallation;      [position 7253:32]]
    org.netbeans.modules.search.TextDetail$DetailNode@a1422f[Name=    javax.swing.JButton jButtonAjouterST;      [position 7254:32], displayName=    javax.swing.JButton jButtonAjouterST;      [position 7254:32]]
    org.netbeans.modules.search.TextDetail$DetailNode@ffe8b2[Name=    javax.swing.JButton jButtonAjouterZone;      [position 7255:32], displayName=    javax.swing.JButton jButtonAjouterZone;      [position 7255:32]]
    org.netbeans.modules.search.MatchingObject@1b0298d[Connexion.java]
    org.netbeans.modules.search.TextDetail$DetailNode@d2b7f6[Name=    public static void ajouter(String query)      [position 115:24], displayName=    public static void ajouter(String query)      [position 115:24]]
    Donc ca n'a aucune pertinence.
    J'ai réeffectuer ce test en incluant les comms :
    Nom : Sans titre.jpg
Affichages : 289
Taille : 55,7 Ko

    En cliquant sur quelques exemples, je remarque qu'il utilise à chaque fois un fonction différente du type :
    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
        /* Méthode permettant d'ajouter une annexe dans la base de données */
        public static void ajoutAnnexe(int id, String nature, String creation, String debut, String fin, int effectif, boolean upload, String matricule, int idZone)
        {
            try
            {
                System.out.println(id);
                System.out.println(nature);
                System.out.println(creation);
                System.out.println(debut);
                System.out.println(fin);
                System.out.println(effectif);
                System.out.println(upload);
                System.out.println(matricule);
                System.out.println(idZone);
                Connexion.query = "INSERT INTO Annexe (IdAnnexe, Matricule, NatureIntervention, DateCreation, DateDeb, DateFin, Upload, Effectif, IdZone) VALUES ("+id+", '"+nature+"', '"+creation+"', '"+debut+"', '"+fin+"', "+effectif+", "+upload+", '"+matricule+"', "+idZone+");";
                System.out.println(Connexion.query);
                Connexion.stmt.executeUpdate(Connexion.query);
            }
            catch(SQLException e)
            {
                System.out.println(e.getMessage());
            }
        }

  2. #202
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    Ca ne fonctionne pas avec Alt+F7
    Non ! Alt+F7 fonctionne !
    Son rôle est de trouver intelligemment l'usage effectif d'une méthode ou d'une classe Java dans le reste du code
    Alors que Ctrl+F recherche du texte sans se préoccuper de savoir s'il s'agit d'un simple commentaire

    Bref :
    - Alt+F7 nous dit que la méthode ajouter n'est pas utilisée.
    - le mot ajouter est utilisé pour commenter du code

    Le code que tu as posté est intéressant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                Connexion.query = "INSERT INTO Annexe (IdAnnexe, Matricule, NatureIntervention, DateCreation, DateDeb, DateFin, Upload, Effectif, IdZone) VALUES ("+id+", '"+nature+"', '"+creation+"', '"+debut+"', '"+fin+"', "+effectif+", "+upload+", '"+matricule+"', "+idZone+");";
                System.out.println(Connexion.query);
                Connexion.stmt.executeUpdate(Connexion.query);
    Cela prouve que le programmeur a renoncé à utilisé sa méthode ajouter

    vérifie avec Alt+F7 que les autres méthodes supprimer, modifier ne sont pas utilisées
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #203
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    Bon, bonne nouvelle !
    Les fonctions rechercher() / ajouter() / modifier() et fermer() ne sont pas utilisées !

    Seule la fonction supprimer() est utilisée à 6 reprises :
    Nom : Sans titre.jpg
Affichages : 248
Taille : 49,1 Ko

    Exemple d'utilisation de supprimer() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        public static void deleteAnnexeEnCours(int numAnnexe)
        {
            try
            {
                String query = "DELETE FROM Annexe WHERE IdAnnexe = "+numAnnexe+";";
                Connexion.supprimer(query);
            }
            catch(Exception ex)
            {
                System.out.println(ex.getMessage());
            }
        }
    Autre exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        public static void deleteChefChantier(JTable table)
        {
            DefaultTableModel modele = (DefaultTableModel) table.getModel();
            String nom = (String) table.getValueAt(table.getSelectedRow(), 0);
            String prenom = (String) table.getValueAt(table.getSelectedRow(), 1);
            String tel = (String) table.getValueAt(table.getSelectedRow(), 3);
            Connexion.query = "DELETE FROM ChefChantier WHERE NomCC = '"+nom+"' AND PrenomCC = '"+prenom+"' AND TelCC = '"+tel+"';";
            Connexion.supprimer(Connexion.query);
            modele.removeRow(table.getSelectedRow());
        }

  4. #204
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    Bon, cela veut dire que le programmeur précédent a renoncer à son bricolage

    Il faudra partout utiliser des PreparedStatement créés à partir d'un objet Connexion :
    selon la séquence :
    1) création : PreparedStatement ps = connexion.getCon().prepareStatement("ma requête SQL avec des ? comme paramètres");
    2) renseigner les paramètres avec ps.set...
    3) exécuter le ps
    4) fermer la connexion

    Par exemple pour remplacer l'utilisation de la méthode supprimer dans la partie métier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        public static void deleteAnnexeEnCours(int numAnnexe)
        {
            try
            {
                String query = "DELETE FROM Annexe WHERE IdAnnexe = "+numAnnexe+";";
                Connexion.supprimer(query);
            }
            catch(Exception ex)
            {
                System.out.println(ex.getMessage());
            }
        }
    doit être remplacé par :
    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
     
        public static void deleteAnnexeEnCours(int numAnnexe)
        {
            try
            {
                Connexion connexion = new Connexion();
                PreparedStatement ps = connexion.getCon().prepareStatement("DELETE FROM Annexe WHERE IdAnnexe = ? ;"); 
                ps.setInt(1, numAnnexe);
                ps.executeUpdate();
                connexion.close();
            }
            catch(Exception ex)
            {
                System.out.println(ex.getMessage());
            }
        }
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  5. #205
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    Ok, donc dans un premier temps, j'ai essayer de marier ma classe Connexion() à l'application :
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    package coactivite2;
    
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.InputStreamReader;
    import java.sql.*;
    
    public class Connexion {
    
        public static Connection con;
        public static String query;
        public static Statement stmt;
        public static ResultSet res;
        public static ResultSetMetaData metaBase;
    
        public Connection getConnexion() {
            // chargement du pilote
            try {
                String url = null;
                String fichier = "X:/lien/connexion.xml";
                FileInputStream ips = new FileInputStream(fichier); //unreported exception java.io.filenotfoundexception must be caught or declared to be thrown
                InputStreamReader ipsr = new InputStreamReader(ips);
                BufferedReader br = new BufferedReader(ipsr);
                url = br.readLine(); //unreported exception ioexception must be caught or declared to be thrown
                br.close(); //unreported exception ioexception must be caught or declared to be thrown
    
                 String pilote = "com.mysql.jdbc.Driver";
                 Class.forName(pilote);
            } catch (ClassNotFoundException e) {
                  e.printStackTrace();
            }
    
            //connection a la base de données
            try {
                String DBurl="jdbc:mysql://IPv4/coactivitenew";
                String login="xxx";
                String password="xxx";
                con = DriverManager.getConnection(DBurl,login,password);
                java.util.Properties prop = new java.util.Properties();
                prop.put("charSet", "ISO-8859-1");
                con.setClientInfo(prop);
    
                return con;
            } catch (SQLException e) {
                System.err.println("Erreur de connexion à la base de données!");
                System.err.println(e);
                e.printStackTrace();
                return con;
            }
        }
    
       public void closeConn() {
            try {
                 con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
        public static void supprimer(String query)
        {
            try
            {
            stmt.executeUpdate(query);
            System.out.println("Element suprimé");
            }
            catch (SQLException ex)
            {
                System.err.println(ex);
                e.printStackTrace();
            }
        }
    }
    Le debugger pointe ailleurs (certainement un probleme de connexion) mais on verra ca plus tard...
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    debug:
    Have no FileObject for C:\Program Files\Java\jdk1.6.0_25\jre\lib\sunrsasign.jar
    Have no FileObject for C:\Program Files\Java\jdk1.6.0_25\jre\lib\modules\jdk.boot.jar
    Have no FileObject for C:\Program Files\Java\jdk1.6.0_25\jre\classes
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
            at coactivite2.Zone.AffichageZone(Zone.java:179)
            at coactivite2.Fenetre$EcouteurFenetre.windowActivated(Fenetre.java:7800)
            at java.awt.Window.processWindowEvent(Window.java:1877)
            at javax.swing.JFrame.processWindowEvent(JFrame.java:274)
            at java.awt.Window.processEvent(Window.java:1823)
            at java.awt.Component.dispatchEventImpl(Component.java:4651)
            at java.awt.Container.dispatchEventImpl(Container.java:2099)
            at java.awt.Window.dispatchEventImpl(Window.java:2478)
            at java.awt.Component.dispatchEvent(Component.java:4481)
            at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850)
            at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:910)
            at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:409)
            at java.awt.Component.dispatchEventImpl(Component.java:4523)
            at java.awt.Container.dispatchEventImpl(Container.java:2099)
            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.SentEvent.dispatch(SentEvent.java:55)
            at java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent.dispatch(DefaultKeyboardFocusManager.java:183)
            at java.awt.DefaultKeyboardFocusManager.sendMessage(DefaultKeyboardFocusManager.java:210)
            at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:286)
            at java.awt.Component.dispatchEventImpl(Component.java:4523)
            at java.awt.Container.dispatchEventImpl(Container.java:2099)
            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.SequencedEvent.dispatch(SequencedEvent.java:101)
            at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
            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)
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
            at coactivite2.ChargeAffaire.isAdmin(ChargeAffaire.java:312)
            at coactivite2.Fenetre$EcouteurFenetre.windowOpened(Fenetre.java:7741)
            at java.awt.Window.processWindowEvent(Window.java:1862)
            at javax.swing.JFrame.processWindowEvent(JFrame.java:274)
            at java.awt.Window.processEvent(Window.java:1823)
            at java.awt.Component.dispatchEventImpl(Component.java:4651)
            at java.awt.Container.dispatchEventImpl(Container.java:2099)
            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)
    BUILD SUCCESSFUL (total time: 21 seconds)
    Aussi, je me demandais si on ne pouvais pas mettre le statement dans la classe connexion ?
    (Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE)
    Du coup, on aurais une utilisation du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    try {
                Connexion connexion = new Connexion();
                Connection conn = connexion.getConnexion();
                
                ResultSet resultats = connexion.stmt.executeQuery("SELECT * FROM persons");
               
                //Utilisation de la variable résultats
                
                resultats.close();
                connexion.closeConn();
            } catch (SQLException e ) {
                e.printStackTrace();
            }
    Qu'est ce que tu en penses ?

  6. #206
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    Un problème à la fois.

    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
            try {
                String url = null;
                String fichier = "X:/lien/connexion.xml";
                FileInputStream ips = new FileInputStream(fichier); //unreported exception java.io.filenotfoundexception must be caught or declared to be thrown
                InputStreamReader ipsr = new InputStreamReader(ips);
                BufferedReader br = new BufferedReader(ipsr);
                url = br.readLine(); //unreported exception ioexception must be caught or declared to be thrown
                br.close(); //unreported exception ioexception must be caught or declared to be thrown
    
                 String pilote = "com.mysql.jdbc.Driver";
                 Class.forName(pilote);
            } catch (ClassNotFoundException e) {
                  e.printStackTrace();
            }
    Quand tu as : "unreported exception java.io.filenotfoundexception must be caught or declared to be thrown"
    ça veut dire que tu n'as pas la gestion d'erreur correspondante dans ton try / catch

    Ici, tu n'as que catch (ClassNotFoundException e)
    ce qui veut dire que seule l'erreur ClassNotFound est gérée
    et cela parce qu'avant il n'y avait que le chargement de classe Class.forName(pilote);
    et que tu as ajouté FileInputStream après sans modifier le catch.

    1) NetBeans doit t'indiquer le problème en soulignant la ligne en rouge ondulé et une ampoule jaune dans la marge.
    (l'alarme sonore n'est pas encore implémentée mais je sens que cela va venir.)
    2) Il te suffit alors de faire Alt+Enter comme il te le suggère pour qu'il te propose d'ajouter les catch supplémentaires.

    Sinon, tu peux aussi remplacer ClassNotFoundException par Exception dans ton catch qui va alors gérer toutes les erreurs quelle que soit leur nature.
    Cette dernière solution est la meilleure pour toi en ce moment car elle allège le code.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  7. #207
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    Ok, juste en remplaçant ClassNotFoundException par Exception, j'ai plus de vaguelettes rouges

    Ensuite, je passe donc à mon histoire d’allègement de code via l'inclusion de stmp dans la classe Connexion().
    Ce que j'ai mis avant est cohérent ?

  8. #208
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    Est-ce que l'idée est de pouvoir lancer une requête SQL sans tout le tralala de connexion + PreparedStatement + try/catch + fermeture de connexion ?

    C'est possible à condition d'utiliser les desing pattern "Singleton" et "Factory"

    Par ailleurs, ça ne marche que pour les requêtes CREATE / UPDATE / DELETE

    Pour les requêtes SELECT il faudra continuer en mode "traditionnel" car tu dois fermer toi-même la connexion après récupération des données

    Est-ce bien cela que tu veux ?
    si oui, cela te fais gagner un niveau dans le jeu
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  9. #209
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    Ah c'est très intéressant mais je crains de ne pas avoir le niveau...
    Après, ce que je préfère en développement, c'est d'avoir un modèle qui cartonne et ne plus y toucher !!! (sauf grosse MAJ du langage )

    A toi de me conseiller Maitre Yoda

    Sinon mon idée était d'éviter de mettre les params de stmt partout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

  10. #210
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    Concrètement, j'ai ca :
    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
        /* Méthode permettant d'afficher les zones et installations dans le tableau du panneau d'administration */
        public static void AffichageZone(JTable table)
        {
            try
            {
                DefaultTableModel modele = (DefaultTableModel) table.getModel();
                Vector<Vector<String>> data = null;
                Connexion.query = "SELECT NomZone, NomInstallation FROM zone, Installation WHERE installation.IdInstallation = zone.IdInstallation GROUP BY NomInstallation, NomZone;";
                Connexion.res = Connexion.stmt.executeQuery(Connexion.query);
                int i = 0;
                Utilitaire.centrerTable(table);
                while(Connexion.res.next())
                {
                    modele.addRow(data);
                    table.setValueAt(Connexion.res.getString(1),i,0);
                    table.setValueAt(Connexion.res.getString(2),i,1);
                    i++;
                }
            }
            catch(SQLException ex)
            {
                System.out.println(ex.getMessage());
                ex.printStackTrace();
            }
        }
    Je suis censé le modifier pour qu'il ressemble à ca ? :
    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
     
        /* Méthode permettant d'afficher les zones et installations dans le tableau du panneau d'administration */
        public static void AffichageZone(JTable table)
        {
            try
            {
                DefaultTableModel modele = (DefaultTableModel) table.getModel();
                Vector<Vector<String>> data = null;
                Connexion connexion = new Connexion();
                Connection conn = connexion.getConnexion();
                Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
     
                ResultSet resultats = stmt.executeQuery("SELECT NomZone, NomInstallation FROM zone, Installation WHERE installation.IdInstallation = zone.IdInstallation GROUP BY NomInstallation, NomZone;");
     
                int i = 0;
                Utilitaire.centrerTable(table);
                while(resultats.next())
                {
                    modele.addRow(data);
                    table.setValueAt(Connexion.res.getString(1),i,0);
                    table.setValueAt(Connexion.res.getString(2),i,1);
                    i++;
                }
            }
            catch(SQLException ex)
            {
                ex.printStackTrace();
            }
        }

  11. #211
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    Travail indispensable dans un premier temps, il faut :
    - supprimer la méthode "supprimer"
    - virer toutes les variables statiques catastrophiques pour la connexion qui va se mélanger aux autres connexions
    Révise impérativement le comportement d'une variable statique

    Ta classe est maintenant comme cela :
    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
    public class Connexion {
     
        public Connection con;
     
        public Connection getConnexion() {
            // chargement du pilote
            try {
                String url = null;
                String fichier = "X:/lien/connexion.xml";
                FileInputStream ips = new FileInputStream(fichier); 
                InputStreamReader ipsr = new InputStreamReader(ips);
                BufferedReader br = new BufferedReader(ipsr);
                url = br.readLine();
                br.close();
     
                 String pilote = "com.mysql.jdbc.Driver";
                 Class.forName(pilote);
            } catch (Exception e) {
                  e.printStackTrace();
            }
     
            //connection a la base de données
            try {
                String DBurl="jdbc:mysql://IPv4/coactivitenew";
                String login="xxx";
                String password="xxx";
                con = DriverManager.getConnection(DBurl,login,password);
                java.util.Properties prop = new java.util.Properties();
                prop.put("charSet", "ISO-8859-1");
                con.setClientInfo(prop);
     
                return con;
            } catch (SQLException e) {
                System.err.println("Erreur de connexion à la base de données!");
                System.err.println(e);
                e.printStackTrace();
                return con;
            }
        }
     
       public void closeConn() {
            try {
                 con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  12. #212
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE
    C'était utile avec Access et le driver un peu bidouilleux "jdbc:odbc"

    A priori, tu ne devrais plus en avoir l'usage avec MySql

    avoir un modèle qui cartonne et ne plus y toucher
    Ce qu'il y a de bien c'est que tu cherches à être le programmeur malin plutôt que le programmeur bourrin.
    Dans ce cas, je pense que c'est l'occasion pour toi de faire du code de façon plus rigoureuse qui te fera gagner un temps monstrueux après.

    Cette fameuse classe Connexion en est une bonne illustration.
    Ton prédécesseur a tenté de tout encapsuler dans cette classe. Mais il n'est pas allé au bout de la démarche,
    par manque de connaissance, manque de temps pour l’acquérir et probablement obligation d'arriver à un résultat très vite.

    On va éviter cela mais on va tout de même faire un peu de théorie avec application immédiate

    Le desing pattern "Factory" est utilisé quand on a un besoin de fabrication d'un objet qui a toujours les mêmes caractéristiques.
    On veut économiser et fiabiliser le code.

    C'est ce qu'on va faire avec ResultSet en créant la méthode Factory getResultSet dans ta classe Connexion :

    Ta méthode métier actuelle:

    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
        /* Méthode permettant d'afficher les zones et installations dans le tableau du panneau d'administration */
        public static void AffichageZone(JTable table)
        {
            try
            {
                DefaultTableModel modele = (DefaultTableModel) table.getModel();
                Vector<Vector<String>> data = null;
                Connexion connexion = new Connexion();
                Connection conn = connexion.getConnexion();
                Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
     
                ResultSet resultats = stmt.executeQuery("SELECT NomZone, NomInstallation FROM zone, Installation WHERE installation.IdInstallation = zone.IdInstallation GROUP BY NomInstallation, NomZone;");
     
                int i = 0;
                Utilitaire.centrerTable(table);
                while(resultats.next())
                {
                    modele.addRow(data);
                    table.setValueAt(Connexion.res.getString(1),i,0);
                    table.setValueAt(Connexion.res.getString(2),i,1);
                    i++;
                }
            }
            catch(SQLException ex)
            {
                ex.printStackTrace();
            }
        }
    Méthode Factory à ajouter dans la classe Connexion (qui doit être à jour selon le post précédent)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        public ResultSet getResultSet(String sql) {
            try {
                Statement requete = getConnexion().createStatement(); // je pense que ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE sont inutiles pour MySql
                ResultSet rs = requete.executeQuery(sql);
                return rs;
            } catch (Exception ex) {
                ex.printStackTrace();
                return null;
            }
        }
    on voit que la méthode getResultSet crée la connexion donc tu n'as plus besoin de l'appeler


    Du coup, tu peux écrire ta nouvelle méthode métier comme cela :

    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
        /* Méthode permettant d'afficher les zones et installations dans le tableau du panneau d'administration */
        public static void AffichageZone(JTable table)
        {
            try
            {
                DefaultTableModel modele = (DefaultTableModel) table.getModel();
                Vector<Vector<String>> data = null;
                Connexion connexion = new Connexion(); 
                // une seule ligne pour ouvrir un ResultSet :
                ResultSet resultats = connexion.getResultSet("SELECT NomZone, NomInstallation FROM zone, Installation WHERE installation.IdInstallation = zone.IdInstallation GROUP BY NomInstallation, NomZone;");
     
                int i = 0;
                Utilitaire.centrerTable(table);
                while(resultats.next())
                {
                    modele.addRow(data);
                    table.setValueAt(Connexion.res.getString(1),i,0);
                    table.setValueAt(Connexion.res.getString(2),i,1);
                    i++;
                }
     
                // Attention à fermer la connexion
                connexion.closeConn();
            }
            catch(SQLException ex)
            {
                ex.printStackTrace();
            }
        }
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  13. #213
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    Ok, c'est magnifique comme tout s'articule correctement

    En revanche, il y a MEGA paquet d'autre erreur lol (normal...)
    Que je vais corrigé puisque j'ai la méthode de travail grâce à toi

    Je m'interroge là dessus (code inchangé):
    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
     
        /* Evènement lors du focus sur le menu onglets */
        private void MenuOngletFocusGained(java.awt.event.FocusEvent evt) {                                       
            /* Tableau des annexes du jour */
            Connexion.query = "SELECT Annexe.IdAnnexe, NomCharge, PrenomCharge, DateCreation, DateDeb, DateFin, NomInstallation, NomZone FROM Annexe, ChargeAffaire, Zone, Installation WHERE Annexe.IdZone = Zone.IdZone AND Zone.IdInstallation = Installation.IdInstallation AND Annexe.Matricule = ChargeAffaire.Matricule AND DateCreation = STR_TO_DATE('"+Utilitaire.formaterDateRequete(date)+"', '%m/%d/%Y');";
            Utilitaire.reinitialiserTableau((DefaultTableModel)jTableAnnexeDuJour.getModel());
            System.out.println(Connexion.query);
            Annexe.AffichageAnnexe(Connexion.query, jTableAnnexeDuJour);
     
            /* Tableau des annexes en cours */
            Connexion.query = "SELECT Annexe.IdAnnexe, NomCharge, PrenomCharge, DateCreation, DateDeb, DateFin, NomInstallation, NomZone FROM Annexe, ChargeAffaire, Zone, Installation WHERE Annexe.IdZone = Zone.IdZone AND Zone.IdInstallation = Installation.IdInstallation AND Annexe.Matricule = ChargeAffaire.Matricule AND DateDeb <= STR_TO_DATE('"+Utilitaire.formaterDateRequete(date)+"', '%m/%d/%Y') AND DateFin >= STR_TO_DATE('"+Utilitaire.formaterDateRequete(date)+"', '%m/%d/%Y');";
            System.out.println(Connexion.query);
            Utilitaire.reinitialiserTableau((DefaultTableModel)jTableAnnexeEnCours.getModel());
            Annexe.AffichageAnnexe(Connexion.query, jTableAnnexeEnCours);
     
            /* Tableau des uploads */
            Connexion.query = "SELECT Annexe.IdAnnexe, DateCreation, DateDeb, DateFin, NomSociete FROM Annexe, Societe, Realiser, ChefChantier WHERE Matricule = '"+System.getProperty("user.name")+"' AND Annexe.IdAnnexe = Realiser.IdAnnexe AND Realiser.IdCC = ChefChantier.IdCC AND ChefChantier.idSociete = Societe.IdSociete AND Annexe.upload=False;";
            Utilitaire.reinitialiserTableau((DefaultTableModel)jTableUpload.getModel());
            System.out.println(Connexion.query);
            Annexe.AffichageUpload(Connexion.query, jTableUpload, Integer.parseInt(jTextFieldNumAnnexe.getText()));
        }
    J'ai donc opéré pour obtenir ceci :
    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
     
        private void MenuOngletFocusGained(java.awt.event.FocusEvent evt) {                                       
            /* Tableau des annexes du jour */
            Connexion connexion = new Connexion();
     
            ResultSet resultats = connexion.getResultSet("SELECT Annexe.IdAnnexe, NomCharge, PrenomCharge, DateCreation, DateDeb, DateFin, NomInstallation, NomZone FROM Annexe, ChargeAffaire, Zone, Installation WHERE Annexe.IdZone = Zone.IdZone AND Zone.IdInstallation = Installation.IdInstallation AND Annexe.Matricule = ChargeAffaire.Matricule AND DateCreation = STR_TO_DATE('"+Utilitaire.formaterDateRequete(date)+"', '%m/%d/%Y');");
            Utilitaire.reinitialiserTableau((DefaultTableModel)jTableAnnexeDuJour.getModel());
            System.out.println(resultats);
            Annexe.AffichageAnnexe(resultats, jTableAnnexeDuJour);
            resultats.close();
     
            /* Tableau des annexes en cours */
            ResultSet resultats = connexion.getResultSet("SELECT Annexe.IdAnnexe, NomCharge, PrenomCharge, DateCreation, DateDeb, DateFin, NomInstallation, NomZone FROM Annexe, ChargeAffaire, Zone, Installation WHERE Annexe.IdZone = Zone.IdZone AND Zone.IdInstallation = Installation.IdInstallation AND Annexe.Matricule = ChargeAffaire.Matricule AND DateDeb <= STR_TO_DATE('"+Utilitaire.formaterDateRequete(date)+"', '%m/%d/%Y') AND DateFin >= STR_TO_DATE('"+Utilitaire.formaterDateRequete(date)+"', '%m/%d/%Y');");
            System.out.println(resultats);
            Utilitaire.reinitialiserTableau((DefaultTableModel)jTableAnnexeEnCours.getModel());
            Annexe.AffichageAnnexe(resultats, jTableAnnexeEnCours);
            resultats.close()
     
            /* Tableau des uploads */
            ResultSet resultats = connexion.getResultSet("SELECT Annexe.IdAnnexe, DateCreation, DateDeb, DateFin, NomSociete FROM Annexe, Societe, Realiser, ChefChantier WHERE Matricule = '"+System.getProperty("user.name")+"' AND Annexe.IdAnnexe = Realiser.IdAnnexe AND Realiser.IdCC = ChefChantier.IdCC AND ChefChantier.idSociete = Societe.IdSociete AND Annexe.upload=False;");
            Utilitaire.reinitialiserTableau((DefaultTableModel)jTableUpload.getModel());
            System.out.println(resultats);
            Annexe.AffichageUpload(resultats, jTableUpload, Integer.parseInt(jTextFieldNumAnnexe.getText()));
            resultats.close()
     
            connexion.closeConn();
        }
    Tout te semble correct ? (je n'ai pas d'erreur là dessus)

  14. #214
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    Cela ne devrait PAS fonctionner car
    - dans ton ancien code on utilisait Connexion.query qui est un objet String:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Annexe.AffichageAnnexe(Connexion.query, jTableAnnexeDuJour);
    - dans ton nouveau code tu le remplaces directement par un Resultset ce qui n'a rien à voir ! (et d'ailleurs, supprime le System.out.println(resultats); qui ne donne rien de bon)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Annexe.AffichageAnnexe(Connexion.query, jTableAnnexeDuJour);
    Il faut aller dans la classe Annexe et adapter la méthode AffichageAnnexe
    Au lieu de lui passer le Connexion.query (qui n'existe plus) pour qu'elle en fasse un Resultset, elle recevra directement le Resultset (ce qui devrait simplifier cette méthode)

    Question à mettre dans un petit coin en attendant : tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    STR_TO_DATE('"+Utilitaire.formaterDateRequete(date)+"', '%m/%d/%Y');"
    Je suppose que cela fonctionne, cependant il est préférable de faire un PreparedStatement.
    Pour l'instant, compte tenu de tes délais, on ne va pas s'attaquer à la question mais il serait bon d'y revenir après.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  15. #215
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    Oulala...

    Voici ce que j'ai fais je suis pas très fier...

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    public static void AffichageAnnexe(String query, JTable table)
        {
            try
            {
                DefaultTableModel modele = (DefaultTableModel) table.getModel();
                Vector<Vector<String>> data = null;
                Connexion connexion = new Connexion();
                ResultSet resultats = connexion.getResultSet(query);
                int i = 0;
                Utilitaire.centrerTable(table);
     
                while(resultats.next())
                {
                    modele.addRow(data);
                    table.setValueAt(resultats.getInt(1),i,0);
                    table.setValueAt(resultats.getString(2)+" "+resultats.getString(3),i,1);
                    table.setValueAt(Utilitaire.formaterDate(resultats.getDate(4)),i,2);
                    table.setValueAt(resultats.getDate(5),i,3);
                    table.setValueAt(resultats.getDate(6),i,4);
                    table.setValueAt(resultats.getString(7)+" - "+resultats.getString(8),i,5);
                    i++;
                }
                resultats.close();
                connexion.closeConn();
     
                for (int k=0; k<table.getRowCount(); k++)
                {
                    Date dateDeb = (Date) table.getValueAt(k, 3);
                    Date dateFin = (Date) table.getValueAt(k, 4);
                    Utilitaire.formaterDate(dateDeb);
                    Utilitaire.formaterDate(dateFin);
                    String zone = (String) table.getValueAt(k, 5);
                    for(int j=0; j<table.getRowCount(); j++)
                    {
                        if(j!=k)
                        {
                            if(zone.contentEquals(table.getValueAt(j, 5).toString()))
                            {
                                if(dateDeb.after((Date)table.getValueAt(j, 3)) || dateDeb.equals(table.getValueAt(j, 3)) || dateFin.before((Date)table.getValueAt(j, 4)) || dateFin.equals(table.getValueAt(j, 4)))
                                {
                                    if(dateDeb.before((Date) table.getValueAt(j, 4)) || dateDeb.equals(table.getValueAt(j, 4)))
                                    {
                                        if(dateFin.after((Date)table.getValueAt(j, 3)) || dateFin.equals(table.getValueAt(j, 3)))
                                        {
                                            table.addRowSelectionInterval(j, j);
                                            Color col = new Color(255, 255, 255);
                                            Color col2 = new Color(255, 0, 0);
                                            table.setSelectionForeground(col);
                                            table.setSelectionBackground(col2);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                for(int l = 0; l<table.getRowCount(); l++)
                {
                    table.setValueAt(Utilitaire.formaterDate((Date) table.getValueAt(l,3)), l, 3);
                    table.setValueAt(Utilitaire.formaterDate((Date) table.getValueAt(l,4)), l, 4);
                }
            }
            catch(Exception ex)
            {
                System.out.println(ex.getMessage());
                ex.printStackTrace();
            }
        }
    Si je comprend bien, mon query recu en paramètre est déja un RésultSet ?
    Donc je devrais modifier ainsi :
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
        public static void AffichageAnnexe(ResultSet resultats, JTable table)
        {
            try
            {
                DefaultTableModel modele = (DefaultTableModel) table.getModel();
                Vector<Vector<String>> data = null;
                //Connexion connexion = new Connexion();
                //ResultSet resultats = connexion.getResultSet(query);
                int i = 0;
                Utilitaire.centrerTable(table);
    
                while(resultats.next())
                {
                    modele.addRow(data);
                    table.setValueAt(resultats.getInt(1),i,0);
                    table.setValueAt(resultats.getString(2)+" "+resultats.getString(3),i,1);
                    table.setValueAt(Utilitaire.formaterDate(resultats.getDate(4)),i,2);
                    table.setValueAt(resultats.getDate(5),i,3);
                    table.setValueAt(resultats.getDate(6),i,4);
                    table.setValueAt(resultats.getString(7)+" - "+resultats.getString(8),i,5);
                    i++;
                }
                //resultats.close();
                //connexion.closeConn();
    
                for (int k=0; k<table.getRowCount(); k++)
                {
                    Date dateDeb = (Date) table.getValueAt(k, 3);
                    Date dateFin = (Date) table.getValueAt(k, 4);
                    Utilitaire.formaterDate(dateDeb);
                    Utilitaire.formaterDate(dateFin);
                    String zone = (String) table.getValueAt(k, 5);
                    for(int j=0; j<table.getRowCount(); j++)
                    {
                        if(j!=k)
                        {
                            if(zone.contentEquals(table.getValueAt(j, 5).toString()))
                            {
                                if(dateDeb.after((Date)table.getValueAt(j, 3)) || dateDeb.equals(table.getValueAt(j, 3)) || dateFin.before((Date)table.getValueAt(j, 4)) || dateFin.equals(table.getValueAt(j, 4)))
                                {
                                    if(dateDeb.before((Date) table.getValueAt(j, 4)) || dateDeb.equals(table.getValueAt(j, 4)))
                                    {
                                        if(dateFin.after((Date)table.getValueAt(j, 3)) || dateFin.equals(table.getValueAt(j, 3)))
                                        {
                                            table.addRowSelectionInterval(j, j);
                                            Color col = new Color(255, 255, 255);
                                            Color col2 = new Color(255, 0, 0);
                                            table.setSelectionForeground(col);
                                            table.setSelectionBackground(col2);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                for(int l = 0; l<table.getRowCount(); l++)
                {
                    table.setValueAt(Utilitaire.formaterDate((Date) table.getValueAt(l,3)), l, 3);
                    table.setValueAt(Utilitaire.formaterDate((Date) table.getValueAt(l,4)), l, 4);
                }
            }
            catch(Exception ex)
            {
                System.out.println(ex.getMessage());
                ex.printStackTrace();
            }
        }

  16. #216
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    Je n'avais pas vu la classe comme cela.
    Il vaut mieux revenir à ton précédent :
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    public static void AffichageAnnexe(String query, JTable table)
        {
            try
            {
                DefaultTableModel modele = (DefaultTableModel) table.getModel();
                Vector<Vector<String>> data = null;
                Connexion connexion = new Connexion();
                ResultSet resultats = connexion.getResultSet(query);
                int i = 0;
                Utilitaire.centrerTable(table);
     
                while(resultats.next())
                {
                    modele.addRow(data);
                    table.setValueAt(resultats.getInt(1),i,0);
                    table.setValueAt(resultats.getString(2)+" "+resultats.getString(3),i,1);
                    table.setValueAt(Utilitaire.formaterDate(resultats.getDate(4)),i,2);
                    table.setValueAt(resultats.getDate(5),i,3);
                    table.setValueAt(resultats.getDate(6),i,4);
                    table.setValueAt(resultats.getString(7)+" - "+resultats.getString(8),i,5);
                    i++;
                }
                resultats.close();
                connexion.closeConn();
     
                for (int k=0; k<table.getRowCount(); k++)
                {
                    Date dateDeb = (Date) table.getValueAt(k, 3);
                    Date dateFin = (Date) table.getValueAt(k, 4);
                    Utilitaire.formaterDate(dateDeb);
                    Utilitaire.formaterDate(dateFin);
                    String zone = (String) table.getValueAt(k, 5);
                    for(int j=0; j<table.getRowCount(); j++)
                    {
                        if(j!=k)
                        {
                            if(zone.contentEquals(table.getValueAt(j, 5).toString()))
                            {
                                if(dateDeb.after((Date)table.getValueAt(j, 3)) || dateDeb.equals(table.getValueAt(j, 3)) || dateFin.before((Date)table.getValueAt(j, 4)) || dateFin.equals(table.getValueAt(j, 4)))
                                {
                                    if(dateDeb.before((Date) table.getValueAt(j, 4)) || dateDeb.equals(table.getValueAt(j, 4)))
                                    {
                                        if(dateFin.after((Date)table.getValueAt(j, 3)) || dateFin.equals(table.getValueAt(j, 3)))
                                        {
                                            table.addRowSelectionInterval(j, j);
                                            Color col = new Color(255, 255, 255);
                                            Color col2 = new Color(255, 0, 0);
                                            table.setSelectionForeground(col);
                                            table.setSelectionBackground(col2);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                for(int l = 0; l<table.getRowCount(); l++)
                {
                    table.setValueAt(Utilitaire.formaterDate((Date) table.getValueAt(l,3)), l, 3);
                    table.setValueAt(Utilitaire.formaterDate((Date) table.getValueAt(l,4)), l, 4);
                }
            }
            catch(Exception ex)
            {
                System.out.println(ex.getMessage());
                ex.printStackTrace();
            }
        }
    Mais pour utiliser ta méthode Annexe.AffichageAnnexe tu lui passe le query sans utiliser Connexion.query qui n'existe plus:
    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
     
        /* Evènement lors du focus sur le menu onglets */
        private void MenuOngletFocusGained(java.awt.event.FocusEvent evt) {                                       
            /* Tableau des annexes du jour */
            String query1 = "SELECT Annexe.IdAnnexe, NomCharge, PrenomCharge, DateCreation, DateDeb, DateFin, NomInstallation, NomZone FROM Annexe, ChargeAffaire, Zone, Installation WHERE Annexe.IdZone = Zone.IdZone AND Zone.IdInstallation = Installation.IdInstallation AND Annexe.Matricule = ChargeAffaire.Matricule AND DateCreation = STR_TO_DATE('"+Utilitaire.formaterDateRequete(date)+"', '%m/%d/%Y');";
            Utilitaire.reinitialiserTableau((DefaultTableModel)jTableAnnexeDuJour.getModel());
            Annexe.AffichageAnnexe(query1 , jTableAnnexeDuJour);
     
            /* Tableau des annexes en cours */
            String query2 = "SELECT Annexe.IdAnnexe, NomCharge, PrenomCharge, DateCreation, DateDeb, DateFin, NomInstallation, NomZone FROM Annexe, ChargeAffaire, Zone, Installation WHERE Annexe.IdZone = Zone.IdZone AND Zone.IdInstallation = Installation.IdInstallation AND Annexe.Matricule = ChargeAffaire.Matricule AND DateDeb <= STR_TO_DATE('"+Utilitaire.formaterDateRequete(date)+"', '%m/%d/%Y') AND DateFin >= STR_TO_DATE('"+Utilitaire.formaterDateRequete(date)+"', '%m/%d/%Y');";
            Utilitaire.reinitialiserTableau((DefaultTableModel)jTableAnnexeEnCours.getModel());
            Annexe.AffichageAnnexe(query2, jTableAnnexeEnCours);
     
            /* Tableau des uploads */
            String query3 = "SELECT Annexe.IdAnnexe, DateCreation, DateDeb, DateFin, NomSociete FROM Annexe, Societe, Realiser, ChefChantier WHERE Matricule = '"+System.getProperty("user.name")+"' AND Annexe.IdAnnexe = Realiser.IdAnnexe AND Realiser.IdCC = ChefChantier.IdCC AND ChefChantier.idSociete = Societe.IdSociete AND Annexe.upload=False;";
            Utilitaire.reinitialiserTableau((DefaultTableModel)jTableUpload.getModel());
            Annexe.AffichageUpload(query3 , jTableUpload, Integer.parseInt(jTextFieldNumAnnexe.getText()));
        }
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  17. #217
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    Ok je vais m'en charger.

    je m'interroge sur ceci :
    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
            Connexion connexion = new Connexion();
            ResultSet resultats = null;
            for(int j = 0;j<nomSociete.size();j++)
            {
                try{
                    resultats = connexion.getResultSet("SELECT NumRue, NomRue, CodePostal, Ville, Tel, Fax, Mail FROM Societe WHERE NomSociete = '"+nomSociete.get(j)+"';");
                    while(resultats.next())
                    {
                        sousTraitant.add(nomSociete.get(j).toString()+"  "+resultats.getString(1)+" "+resultats.getString(2)+" "+resultats.getString(3)+" "+resultats.getString(4)+" - "+resultats.getString(5)+"  "+resultats.getString(6)+"  "+resultats.getString(7));
                    }
                    resultats.close();
                } catch (Exception e) {
                    e.printStackTrace();
                    connexion.closeConn();
                }
            }
            connexion.closeConn();
    A savoir qu'avant il n'y avait pas de try/catch, j'ai jugé utile d'en mettre à chaque interaction avec la BDD afin d'en récupérer la StackTrace en cas d'erreur.

    Du coup si on tombe dans un erreur, il faut quand même fermer la connexion non ? (ci dessus)

  18. #218
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 705
    Points : 4 783
    Points
    4 783
    Par défaut
    Citation Envoyé par Spiicky Voir le message
    A savoir qu'avant il n'y avait pas de try/catch, j'ai jugé utile d'en mettre à chaque interaction avec la BDD afin d'en récupérer la StackTrace en cas d'erreur.

    Du coup si on tombe dans un erreur, il faut quand même fermer la connexion non ? (ci dessus)
    Oui, quand tu utilises resultats.next() tu es obligé de faire un try catch
    La fermeture de le connexion doit aussi être faite.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  19. #219
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    Je suis sur le point de finir de tout remplacer...

    J'ai un soucis ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private void jComboBoxListeSocieteAjoutCC(java.awt.event.FocusEvent evt) {                                              
            try{
                Connexion connexion = new Connexion();
                ResultSet resultats = connexion.getResultSet("SELECT NomSociete FROM Societe;");
                Utilitaire.remplirComboBox(jComboBoxSocieteCC, resultats);
                connexion.closeConn();
            }catch (Exception e){
                e.printStackTrace();
            }
    }
    Nom : Sans titre.jpg
Affichages : 224
Taille : 59,7 Ko

    Et ca me le fait dans toute la partie Fenetre.java

    A mon avis, resultat est dans un format inattendu par les fonction de type remplirTextField() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Utilitaire.remplirTextField(jTextFieldActivite, resultats);
    On attend certainement un tableau non ?

    Et j'ai trop d'erreur pour mettre la StackTrace ^^

  20. #220
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2015
    Messages : 340
    Points : 31
    Points
    31
    Par défaut
    Ah non, c'est même erreur que le post #216.
    Merci je poursuis !!!

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

Discussions similaires

  1. ListView qui change de taille mais n'affiche pas le contenu d'une ObservableCollection
    Par Atellane dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 14/08/2014, 11h46
  2. DataGrid n'affiche pas le contenu de certaines colonnes d'un Datatable
    Par alucia dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 20/09/2013, 14h39
  3. .load qui n'affiche pas le contenu de la page
    Par tonydu91 dans le forum jQuery
    Réponses: 4
    Dernier message: 07/04/2013, 00h58
  4. [SimpleXML] Problème avec simpleXML : il n'affiche pas le contenu de mon élément
    Par ploxien dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 05/05/2007, 20h43
  5. GUI Java par netbeans - ne s'affiche pas
    Par G_angel dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 31/01/2007, 12h38

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