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. #461
    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
    Citation Envoyé par Népomucène Voir le message
    alors on doit faire une liste déroulante dans l'écran de création d'annexe pour lui attribuer la zone.
    C'est déjà le cas !
    Dans la création, il prend juste un idZone qui existe et le met dedans. A mon avis, cette table n'acceptait pas NULL dans IdZone.

    J'essaye de kicker la création et la suppression de l'annexe pour remplacer l'UPDATE de l'annexe par un INSRT INTO ?
    J'attends ton feu vert

  2. #462
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    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 711
    Points : 4 792
    Points
    4 792
    Par défaut
    il prend juste un idZone qui existe et le met dedans
    Il prend le dernier dans la liste pour le mettre en valeur par défaut.
    à voir si on garde cette particularité à l'ouverture de la création de l'annexe

    Donc Zone est bien une "table de référence" et Annexe doit avoir une zone.
    On laisse l'écran comme cela.

    Au moment de l'enregistrement, c'est là où on crée l'Id de l'Annexe
    Pour l'instant, il est calculé comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                Connexion connexion = new Connexion();
                ResultSet resultats = connexion.getResultSet("" +
                    "SELECT IdAnnexe " +
                    "FROM Annexe;");
                while(resultats.next()){
                    result = resultats.getInt(1);
                }
                resultats.close();
    Le jour où tu as une table avec 500.000 enregistrements, je te laisse imaginer le temps d'attente si on boucle jusqu'à la fin de la table pour avoir le dernier numéro !
    C'est à remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                Connexion connexion = new Connexion();
                ResultSet resultats = connexion.getResultSet("SELECT MAX(IdAnnexe) + 1 As NewIdAnnexe FROM Annexe;");
                idAnnexe = resultats.getInt("NewIdAnnexe");
                connexion.close();
    On fait faire le travail à MySql qui est fait pour cela.

  3. #463
    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
    D'accord, on traiteras ce problème dans une version ultérieure.

    Me reste ce soucis d'affichage des annexes dans les tableaux.
    Une idée du pourquoi on affiche rien la dedans ?
    => je dois chopper le nom du tableau dans le design et Find dans l'application pour voir ce qu'il fait c'est ca ?

  4. #464
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    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 711
    Points : 4 792
    Points
    4 792
    Par défaut
    Regarde déjà le résultat des requêtes utilisées : fais des tests directement dans MySql pour être sûr d'avoir quelque chose à afficher

  5. #465
    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
    Déjà il n'aime pas trop ton alias :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    java.sql.SQLException: Before start of result set
            at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
            at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:897)
            at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:886)
            at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
            at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:790)
            at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2472)
            at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2572)
            at coactivite4.Annexe.recupererIdAnnexeCree(Annexe.java:204)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Connexion connexion = new Connexion();
                ResultSet resultats = connexion.getResultSet("SELECT MAX(IdAnnexe) + 1 As NewIdAnnexe FROM Annexe;");
                idAnnexe = resultats.getInt("NewIdAnnexe");
                resultats.close();

  6. #466
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    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 711
    Points : 4 792
    Points
    4 792
    Par défaut
    Ce n'est pas l'alias ; c'est que j'ai oublié de positionner sur le 1er enregistrement !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                Connexion connexion = new Connexion();
                ResultSet resultats = connexion.getResultSet("SELECT MAX(IdAnnexe) + 1 As NewIdAnnexe FROM Annexe;");
                resultats.next();
                idAnnexe = resultats.getInt("NewIdAnnexe");
                resultats.close();
    d'ailleurs tu aurais du trouver tout seul : java.sql.SQLException: Before start of result set

  7. #467
    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
    Citation Envoyé par Népomucène Voir le message
    d'ailleurs tu aurais du trouver tout seul : java.sql.SQLException: Before start of result set
    Je comprend ca par "avant de commencer ... la fonction qui récupère les valeurs" lol

    Je crois pas que cela fonctionne, il a récupéré 1 pour la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1' for key 'PRIMARY'
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
            at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
            at com.mysql.jdbc.Util.getInstance(Util.java:408)
            at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:935)
            at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3970)
            at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3906)
            at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524)
            at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2677)
            at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2545)
            at com.mysql.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1540)
            at com.mysql.jdbc.StatementImpl.executeLargeUpdate(StatementImpl.java:2595)
            at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1468)
            at coactivite4.Connexion.execSql(Connexion.java:62)
            at coactivite4.Annexe.recupererIdAnnexeCree(Annexe.java:217)
            at coactivite4.Fenetre$EcouteurFenetre.windowOpened(Fenetre.java:9565)

  8. #468
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    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 711
    Points : 4 792
    Points
    4 792
    Par défaut
    Si si ... ça marche .... c'est simplement qu'il y a un bug !

    voilà le genre de réponse que tu dois apprendre à dire à un utilisateur, cela fait partie de ton stage

    Tu postes le code complet de l'INSERT (avec le calcul de l'Id) ?

  9. #469
    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
    Voici le code complet de la method :
    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
    public int recupererIdAnnexeCree() {
            try {
                int result = 0;
                matricule = System.getProperty("user.name");
     
                Connexion connexion = new Connexion();
                ResultSet resultats = connexion.getResultSet("SELECT MAX(IdAnnexe) + 1 As NewIdAnnexe FROM Annexe;");
                resultats.next();
                idAnnexe = resultats.getInt("NewIdAnnexe");
                resultats.close();
     
                resultats = connexion.getResultSet("" +
                    "SELECT IdZone " +
                    "FROM Zone");
                while(resultats.next()){
                    idZone = resultats.getInt(1);
                }
                idAnnexe = result+1;
                resultats.close();
     
                connexion.execSql("" +
                    "INSERT INTO Annexe (IdAnnexe, Matricule, IdZone, Upload) " +
                    "VALUES("+idAnnexe+", '"+matricule+"', "+idZone+", False);");
                connexion.closeConn();
     
                return idAnnexe;
            } catch (Exception e) {
                e.printStackTrace();
                return 0;
            }
        }
    Et celui de la classe complète :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    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
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    package coactivite4;
     
    import java.awt.Color;
    import java.sql.*;
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    //import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Date;
    import java.util.Properties;
    import java.util.Vector;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    import javax.swing.JOptionPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
     
    public class Annexe {
        private int idAnnexe;
        private String natureIntervention;
        private String dateCreation;
        private String dateDeb;
        private String dateFin;
        private int effectif;
        private boolean upload;
        private String matricule;
        private int idZone;
        log l= new log();
     
        /* Constructeur par défaut de la classe Annexe */
        public Annexe(){
            idAnnexe = 0;
            natureIntervention = null;
            dateCreation = null;
            dateDeb = null;
            dateFin = null;
            effectif = 0;
            upload = false;
            matricule = null;
            idZone = 0;
        }
     
        /* Constructeur par paramètres de la classe Annexe */
        public Annexe (int id, String ni, String dc, String dd, String df, int e, boolean up, String mat, int idz){
            idAnnexe = id;
            natureIntervention = ni;
            dateCreation = dc; 
            dateDeb = dd;
            dateFin = df;
            effectif = e;
            upload = up;
            matricule = mat;
            idZone = idz;
        }
     
        /* Constructeur par recopie de la classe Annexe */
        public Annexe (Annexe a) {
            idAnnexe = a.idAnnexe;
            natureIntervention = a.natureIntervention;
            dateCreation = a.dateCreation;
            dateDeb = a.dateDeb;
            dateFin = a.dateFin;
            effectif = a.effectif;
            upload = a.upload;
            matricule = a.matricule;
            idZone = a.idZone;
        }
     
        /* Méthodes get retournant les champs de la classe Annexe */
        public int getIdAnnexe(){
            return idAnnexe;
        }
     
        public String getNatureIntervention() {
            return natureIntervention;
        }
     
        public String getDateCreation() {
            return dateCreation;
        }
     
        public String getDateDeb() {
            return dateDeb;
        }
     
        public String getDateFin() {
            return dateFin;
        }
     
        public int getEffectif() {
            return effectif;
        }
     
        public boolean getUpload() {
            return upload;
        }
     
        public String getMatricule() {
            return matricule;
        }
     
        public int getIdZone() {
            return idZone;
        }
     
        /* Méthodes set permettant la modification des champs de la classe Annexe */
        public void setIdAnnexe(int id) {
            idAnnexe = id;
        }
     
        public void setNatureIntervention(String ni) {
            natureIntervention = ni;
        }
     
        public void setDateCreation(String dc) {
            dateCreation = dc;
        }
     
        public void setDateDeb(String dd) {
            dateDeb = dd;
        }
     
        public void setDateFin(String df) {
            dateFin = df;
        }
     
        public void setUpload(boolean up){
            upload = up;
        }
     
        public void setEffectif(int e) {
            effectif = e;
        }
     
        public void setMatricule(String mat){
            matricule = mat;
        }
     
        public void setIdZone(int idz) {
            idZone = idz;
        }
     
        /* Méthodes toString() affichant les champs de la classe Annexe */
        @Override
        public String toString()
        {
            return "Id de l'annexe : "+idAnnexe+" Nature de l'intervention : "+natureIntervention+" Date de création : "+dateCreation+" Date de début : "+dateDeb+" Date de Fin"+dateFin+
            " Effectif : "+effectif+" Matricule : "+matricule+" Id Zone : "+idZone+" Upload :"+upload;
        }
     
        /* 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.print("\n \n INSERT INTO Annexe (" +
                        "IdAnnexe" +
                        ", Matricule" +
                        ", NatureIntervention" +
                        ", DateCreation" +
                        ", DateDeb" +
                        ", DateFin" +
                        ", Upload" +
                        ", Effectif" +
                        ", IdZone) " +
                        "VALUES (" +
                        ""+id+"" +
                        ", '"+nature+"'" +
                        ", '"+creation+"'" +
                        ", '"+debut+"'" +
                        ", '"+fin+"'" +
                        ", "+effectif+"" +
                        ", "+upload+"" +
                        ", '"+matricule+"'" +
                        ", "+idZone+"); \n \n");
                /*Connexion connexion = new Connexion();
                /*connexion.execSql("" +
                        "INSERT INTO Annexe (IdAnnexe, Matricule, NatureIntervention, DateCreation, DateDeb, DateFin, Upload, Effectif, IdZone) " +
                        "VALUES ("+id+", '"+nature+"', '"+creation+"', '"+debut+"', '"+fin+"', "+effectif+", "+upload+", '"+matricule+"', "+idZone+");");
                connexion.closeConn();*/
            } catch(Exception e) {
                e.printStackTrace();
            }
        }
     
        /* Méthode récupérant l'id de l'Annexe a créer pour réserver l'emplacement pour l'annexe en cours de création */
        public int recupererIdAnnexeCree() {
            try {
                int result = 0;
                matricule = System.getProperty("user.name");
     
                Connexion connexion = new Connexion();
                ResultSet resultats = connexion.getResultSet("SELECT MAX(IdAnnexe) + 1 As NewIdAnnexe FROM Annexe;");
                resultats.next();
                idAnnexe = resultats.getInt("NewIdAnnexe");
                resultats.close();
     
                resultats = connexion.getResultSet("" +
                    "SELECT IdZone " +
                    "FROM Zone");
                while(resultats.next()){
                    idZone = resultats.getInt(1);
                }
                idAnnexe = result+1;
                resultats.close();
     
                connexion.execSql("" +
                    "INSERT INTO Annexe (IdAnnexe, Matricule, IdZone, Upload) " +
                    "VALUES("+idAnnexe+", '"+matricule+"', "+idZone+", False);");
                connexion.closeConn();
     
                return idAnnexe;
            } catch (Exception e) {
                e.printStackTrace();
                return 0;
            }
        }
     
        /* Méthode affichant les résultat d'une requête dans un jTable avec création de ligne automatique */
        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();
            }
        }
     
        /* Méthode affichant les résultat d'une requête dans un jTable avec création de ligne automatique */
        public static void AffichageUpload(String query, JTable table, int ida)
        {
            try {
                DefaultTableModel modele = (DefaultTableModel) table.getModel();
                Vector<Vector<String>> data = null;
                Connexion connexion = new Connexion();
                System.out.print("\n"+query+"\n");
                ResultSet resultats = connexion.getResultSet(query);
                int i = 0;
                Utilitaire.centrerTable(table);
                while(resultats.next()) {
                    if(resultats.getInt(1) != ida)
                        modele.addRow(data);
                    /*System.out.print("\n"+resultats.getInt(1)+"\n");
                    System.out.print(resultats.getDate(2)+"\n");
                    System.out.print(resultats.getDate(3)+"\n");
                    System.out.print(resultats.getDate(4)+"\n");
                    System.out.print(resultats.getString(5)+"\n \n");*/
                    table.setValueAt(resultats.getInt(1),i,0);
                    table.setValueAt(Utilitaire.formaterDate(resultats.getDate(2)),i,1);
                    table.setValueAt(Utilitaire.formaterDate(resultats.getDate(3)),i,2);
                    table.setValueAt(Utilitaire.formaterDate(resultats.getDate(4)),i,3);
                    table.setValueAt(resultats.getString(5),i,4);
                    i++;
                }
                resultats.close();
                connexion.closeConn();
            } catch(Exception e) {
                System.out.println("Annexe : Erreur lors de l'affichage du tableau Upload! "+e.getMessage()+" \n ");
                e.printStackTrace();
            }
        }
     
        /* Méthode supprimant la place réservée dans la base de données pour l'annexe en cours de création */
        public static void deleteAnnexeEnCours(int numAnnexe) {
            try {
                Connexion connexion = new Connexion();
                connexion.execSql("" +
                        "DELETE FROM Annexe " +
                        "WHERE IdAnnexe = "+numAnnexe+";");
                connexion.closeConn();
            } catch(Exception e) {
                e.printStackTrace();
            }
        }
     
        public void setFormatDate() {
            this.setDateDeb(dateDeb.replace("/", "-"));
        }
     
        public String recupereAnnee() {
            int nbChar = dateDeb.length();
            String annee = "20"+dateDeb.charAt(nbChar - 2)+""+dateDeb.charAt(nbChar-1);
            return annee;
        }
     
        public void updateUpload() throws IOException, MessagingException{
            try {
                Annexe a = new Annexe();
                Connexion connexion = new Connexion();
                connexion.execSql("UPDATE Annexe SET Upload = "+upload+" WHERE IdAnnexe = "+idAnnexe+";");
                connexion.closeConn();
                JOptionPane.showMessageDialog(null,"Votre fichier est bien mise à jour");
     
                String serveur      = null;
                String envoyerpar   = null;
                String recu         = null;
                String mailTo       = null;
                String ligne1       = null;
                String serveur2     = null;
     
                Properties props        = new Properties();
                String mailFrom         = Utilitaire.lienApplication()+"SYSTEM/mail/001_mailFrom.txt";
                FileInputStream ips2    = new FileInputStream(mailFrom);
                InputStreamReader ipsr2 = new InputStreamReader(ips2);
                BufferedReader br2      = new BufferedReader(ipsr2);
                envoyerpar              = br2.readLine();
                props.put("mail.from", envoyerpar);
                br2.close();
     
                String fichier          = Utilitaire.lienApplication()+"SYSTEM/serveurMail.xml";
                FileInputStream ips     = new FileInputStream(fichier);
                InputStreamReader ipsr  = new InputStreamReader(ips);
                BufferedReader br       = new BufferedReader(ipsr);
                serveur                 = br.readLine();
                props.put("mail.smtp.host", serveur);
                br.close();
     
                props.load(new FileInputStream(Utilitaire.lienApplication()+"Upload/"+recupereAnnee()+"/PlanDePrevention"+idAnnexe+".xls"));
                String fichier1            = Utilitaire.lienApplication()+"/SYSTEM/mail/002_mailTo.txt";
                Session session            = Session.getInstance(props);
                Message message            = new MimeMessage(session);
                FileInputStream ips1       = new FileInputStream(fichier1);
                InputStreamReader ipsr1    = new InputStreamReader(ips1);
                BufferedReader br1         = new BufferedReader(ipsr1);
     
                String chaine="";
                while ((ligne1 = br1.readLine())!= null)
                chaine+=ligne1+"\n";
                System.out.println("\n Annexe:"+chaine);
                message.setRecipients(Message.RecipientType.CC,  InternetAddress.parse(chaine, false));
                br1.close();
     
                message.setSubject("Mise à jour du Plan de prevention "+idAnnexe );
                Fenetre f = new Fenetre();
                // Partie 1: Le texte
                MimeBodyPart mbp1 = new MimeBodyPart();
                try {
                    mbp1.setText("Bonjour," + "\n" + "Une mise à jour du plan de prévention "+idAnnexe + "  vient d'être effectuée.\n" +"\n" +
                    "Merci de bien vouloir SVP le consulter et ne pas hésiter à consulter le chargé d'affaire pour de plus amples informations. \n"
                    + "PS: Ceci est un mail automatique, ne pas répondre.\n" + "  Gestion des Annexes de Plans de Prevention "+"version: "+f.versioning+"");
                } catch (MessagingException ex) {
                    ex.printStackTrace();
                    Logger.getLogger(Fenetre.class.getName()).log(Level.SEVERE, null, ex);
                }
     
                // Partie 2: Le fichier joint
                Annexe annexeUp = new Annexe();
                MimeBodyPart mbp2 = new MimeBodyPart();
                String file = Utilitaire.lienApplication()+"Upload/"+recupereAnnee()+"/PlanDePrevention"+idAnnexe+".xls";
                mbp2.attachFile(file);
     
                // On regroupe les deux dans le message
                MimeMultipart mp = new MimeMultipart();
                try {
                    mp.addBodyPart(mbp1);
                    mp.addBodyPart(mbp2);
                } catch (MessagingException e) {
                    e.printStackTrace();
                    Logger.getLogger(Fenetre.class.getName()).log(Level.SEVERE, null, e);
                }
                try {
                    message.setContent(mp);
                } catch (MessagingException e) {
                    e.printStackTrace();
                    Logger.getLogger(Fenetre.class.getName()).log(Level.SEVERE, null, e);
                }
                try {
                    Transport.send(message);
                } catch (MessagingException ex) {
                    Logger.getLogger(Fenetre.class.getName()).log(Level.SEVERE, null, ex);
                }
            } catch(Exception e) {
                e.printStackTrace();
                System.out.println("Annexe : Erreur lors de l'upload de l'annexe! "+e.getMessage());
            }
        }
    }

  10. #470
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    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 711
    Points : 4 792
    Points
    4 792
    Par défaut
    Tu te reposes trop sur moi.
    Comme je te disais, tu dois avoir un œil critique sur le code

    Le bug est : Duplicate entry '1' for key 'PRIMARY'
    Ce qui veut dire que MySql ne veut pas de '1' comme clé primaire (car il a déjà une annexe n° '1')

    Donc regarde à quel endroit de ton code, le n° d'annexe se met-il à '1' (alors qu'on l'avait bien calculé à MAX + 1) ?
    ça n'est pas compliqué

  11. #471
    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
    Citation Envoyé par Népomucène Voir le message
    Donc regarde à quel endroit de ton code, le n° d'annexe se met-il à '1' (alors qu'on l'avait bien calculé à MAX + 1) ?
    Alors, effectivement, il y avait une instruction qui incrémentait encore une fois l'ID...

    Problème réglé !

    Mais mes tableaux sont toujours vides, je dois donc procéder comme expliqué précédemment ?

  12. #472
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    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 711
    Points : 4 792
    Points
    4 792
    Par défaut
    Les tableaux sont chargés par du code SQL je suppose ... on peut voir ?

  13. #473
    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 je vais me débrouiller un peu lol .

    => soit présent parce que dans 5 min je suis bloqué ! Non je rigole

  14. #474
    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
    C'était un problème de format date

    Maintenant, 3 sont manquants dans ma table template.
    Je viens de les ajouter mais leurs valeurs par defaut est NULL ce qui ne m'interesse pas.

    Est ce que tu connais l'instruction SQL qui permet de SET par defaut une autre valeur du genre : "" ?

  15. #475
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    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 711
    Points : 4 792
    Points
    4 792
    Par défaut
    Pas de mémoire ... c'est un truc du genre ALTER TABLE ...
    pour les modifs de structure de table, j'utilise toujours l'éditeur MySql Workbench
    sinon regarde dans la doc en ligne MySql

  16. #476
    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 ca y est. suppression des anciennes tables et recréation avec default :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ALTER TABLE template
    DROP COLUMN Prevention4;
    ALTER TABLE template
    DROP COLUMN Prevention5;
    ALTER TABLE template
    DROP COLUMN Prevention6;
     
    ALTER TABLE template ADD Prevention4 VARCHAR(200) DEFAULT '';
    ALTER TABLE template ADD Prevention5 VARCHAR(200) DEFAULT '';
    ALTER TABLE template ADD Prevention6 VARCHAR(200) DEFAULT '';
    Par contre j'utilise ceci car j'arrive pas à utiliser WorkBench (Mais j'ai pas bien cherché non plus...)
    WorkBench est super mais nouveau pour moi, je ne l'utilisais pas avant que tu m'en parles

    Je poursuis dans ma recherche de bug...

  17. #477
    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 ca y est. suppression des anciennes tables et recréation avec default :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ALTER TABLE template
    DROP COLUMN Prevention4;
    ALTER TABLE template
    DROP COLUMN Prevention5;
    ALTER TABLE template
    DROP COLUMN Prevention6;
     
    ALTER TABLE template ADD Prevention4 VARCHAR(200) DEFAULT '';
    ALTER TABLE template ADD Prevention5 VARCHAR(200) DEFAULT '';
    ALTER TABLE template ADD Prevention6 VARCHAR(200) DEFAULT '';
    Par contre j'utilise ceci car j'arrive pas à utiliser WorkBench (Mais j'ai pas bien cherché non plus...)
    WorkBench est super mais nouveau pour moi, je ne l'utilisais pas avant que tu m'en parles

    Je poursuis dans ma recherche de bug...

  18. #478
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Re

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ResultSet resultats = connexion.getResultSet("SELECT MAX(IdAnnexe) + 1 As NewIdAnnexe FROM Annexe;");
    ...
    connexion.execSql("" +
                    "INSERT INTO Annexe (IdAnnexe, Matricule, IdZone, Upload) " +
                    "VALUES("+idAnnexe+", '"+matricule+"', "+idZone+", False);");
    C'est pas bon ça, met simplement la colonne IdAnnexe en auto-incrémente dans ta base et tu le vires ensuite de la requête insert.

    A+.

  19. #479
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    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 711
    Points : 4 792
    Points
    4 792
    Par défaut
    @andry.aime : sur le principe, je suis entièrement d'accord.
    L'auto-incrément est bien meilleur que le bricolage du calcul par l'application locale de l'identifiant.
    Il garanti notamment qu'il n'y aura pas de conflit en cas de création simultanée sur deux postes différents (c'est en réseau local)

    Dans cette application il y a des tonnes de trucs tout aussi hérétiques
    et qui justifieraient à eux seuls le rétablissement du bûcher pour les informaticiens sacrilèges.

    Maintenant, vu l'ampleur du travail à fournir par Spiicky qui :
    - est un apprenti en stage dans cette boîte
    - a un délai à tenir fixé par sa hiérarchie
    - n'a pas eu les bonnes sources du programme
    alors j'ai préféré ne traiter que les bugs bloquants pour qu'il puisse livrer si possible à temps une version utilisable.

  20. #480
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    - est un apprenti en stage dans cette boîte
    - a un délai à tenir fixé par sa hiérarchie
    Un stagiaire certes, mais n'empêche pas d'apprendre les bonnes pratiques, et c'est même l'un des objectifs d'un stage. Ce genre de correction prend à peine 10 minutes et garantie le bonne fonctionnement de l'application. Si l'application plante à cause de ce petit bout de code, ces efforts ne serviraient à rien.

    A+.

+ 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, 10h46
  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, 13h39
  3. .load qui n'affiche pas le contenu de la page
    Par tonydu91 dans le forum jQuery
    Réponses: 4
    Dernier message: 06/04/2013, 23h58
  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, 19h43
  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, 11h38

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