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

AWT/Swing Java Discussion :

JDateChooser et insertion d'une date dans une base de données


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club Avatar de ImBehoRE
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 23
    Points : 31
    Points
    31
    Par défaut JDateChooser et insertion d'une date dans une base de données
    Bonjour,

    Je suis encore débutant dans le développement.
    Je développe un genre de formulaire qui doit renseigner la base de données.
    Pour ma date j'utilise un composant de la librairie "JCalendar" sous format yyyy-MM-dd
    Voici à quoi ressemble le "formulaire" :
    Nom : Fenetre du formulaire.JPG
Affichages : 4604
Taille : 71,7 Ko
    Voici mon code pour le bouton "Confirmer" :
    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
        private void ButtonConfirmerDemandeActionPerformed(java.awt.event.ActionEvent evt) {                                                               
            Date ddate = DateChooser.getDate();
            String LoGeo = MenuDeroulant_LocaGeo.getSelectedItem().toString();
            String LiResto = MenuDeroulant_LieuxResto.getSelectedItem().toString();
            String eqpmtEns = MenuDeroulant_EquipmntEns.getSelectedItem().toString();
            String desAva = TxtArea_desAva.getText();
            String PrioAgent = Choix_PrioAgent.getSelectedItem().toString();
     
            if(ddate.equals("") || LoGeo.equals("") || LiResto.equals("") || eqpmtEns.equals("") || desAva.equals("") || PrioAgent.equals("")){
                JOptionPane.showMessageDialog(rootPane, "Certains champs sont vides", "Error", 1);
            }
            else {
                try{
                    String query = "INSERT INTO avarie (`des_avarie`, `id_eqpmt` ,`prio_agent`, `date_creation`,`des_lieuDsetabliss`) values ( ?, (SELECT id_eqpmt FROM `equipement` WHERE des_eqpmt = '"+eqpmtEns+"' ),'"+PrioAgent+"','" +ddate+ "' , '"+LiResto+"' )" ;
                    // INSERT INTO column_1 ( val_1, val_from_other_table ) VALUES('val_1', (SELECT  val_2 FROM table_2 WHERE val_2 = something))
     
     
                    con = Connectionz.getConnection();
                    pst = con.prepareStatement(query);
                    pst.setString(1, desAva);
                    pst.setDate(2, (java.sql.Date)(java.util.Date)ddate);
     
                    pst.executeUpdate();
                    pst.close();
     
                    JOptionPane.showMessageDialog(null, "Enregistrement de la demande avec succès");
     
                }catch(Exception ex){
                    ex.printStackTrace();
                    JOptionPane.showMessageDialog(null, "Erreur d'insertion des données pour une demande d'intervention");
                }   
            }  
        }
    Lors du clique me permettant d’exécuter la requête, j'obtiens ceci dans la console :
    Mon Feb 04 14:22:24 HST 2019 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
    at mcappv3.DdeIntervAgent.ButtonConfirmerDemandeActionPerformed(DdeIntervAgent.java:260)
    at mcappv3.DdeIntervAgent.access$000(DdeIntervAgent.java:19)
    at mcappv3.DdeIntervAgent$1.actionPerformed(DdeIntervAgent.java:165)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2238)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2296)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4897)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4534)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4475)
    at java.awt.Container.dispatchEventImpl(Container.java:2282)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:733)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
    BUILD SUCCESSFUL (total time: 16 seconds)
    L'erreur me renvoie sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pst.setDate(2, (java.sql.Date)(java.util.Date)ddate);
    J'ai donc essayé ceci avec les import qu'il faut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pst.setDate(2, (java.sql.Date) ddate);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pst.setDate(2, Date ddate);
    Lorsque j'enlève cette ligne et que j'essaie, c'est cette ligne là que me renvoie l'erreur dans la console :
    Comment puis-je faire pour que mon code et mon insertion de date dans ma base de de données fonctionnent ?

    Merci à ceux qui pourront m'aider.

  2. #2
    Nouveau membre du Club Avatar de ImBehoRE
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 23
    Points : 31
    Points
    31
    Par défaut Résolu mais deuxième problème
    J'ai résolue mon problème, voici les changement effectuer dans mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                    SimpleDateFormat tdate = new SimpleDateFormat("yyyy-MM-dd");
                    String addDate = tdate.format(ddate.getDate());
                    pst.setString(2, addDate);
     
     
     
     
                    pst.executeUpdate();
    Mais à peine résolue que je me rend compte d'un nouveau problème, dans ma base de données j'obtient 1969-12-31 pour la date alors que j'ai saisie 2019-02-04.
    J'ai changer le format de ma date, mais rien ne change.
    Auriez vous une idée ?

  3. #3
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Bien sure, la première idée est de te dire de lire la javadoc a ce sujet

    getDate() qui est déprécié depuis pas mal de temps ne renvoie pas ce que tu crois, mais le jour du mois, donc ce n'est pas étonnant que dans ta DB tu ais n'importe quoi.

    Aussi il faudrait savoir dans ta DB c'est une DATE ou un STRING ? car dans le premier post tu fait setDate() puis après tu semble faire setString()
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Nouveau membre du Club Avatar de ImBehoRE
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 23
    Points : 31
    Points
    31
    Par défaut
    Bonjour, merci pour ta réponse

    Citation Envoyé par wax78 Voir le message
    Bien sure, la première idée est de te dire de lire la javadoc a ce sujet
    Merci, mais je t'avoue que je ne comprend pas comment je pourrais adapter "Calendar.get(Calendar.DAY_OF_MONTH) " à mon code et obtenir une date complète.
    Le résultat obtenue est le jour du mois.. Genre uniquement le jour (de 1 à 31) ?

    getDate() qui est déprécié depuis pas mal de temps ne renvoie pas ce que tu crois, mais le jour du mois, donc ce n'est pas étonnant que dans ta DB tu ais n'importe quoi.
    J'ai du mal à comprendre ceci, cela veut dire que le résultat obtenu n'est pas une date ?

    Aussi il faudrait savoir dans ta DB c'est une DATE ou un STRING ? car dans le premier post tu fait setDate() puis après tu semble faire setString()
    Dans ma DB la date est du type DATE. Dans mon deuxième je fais un setString car j'ai fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SimpleDateFormat tdate = new SimpleDateFormat("yyyy-MM-dd");
    Qui m'a permis de créer une variable tdate de type SimpleDateFormat("yyyy-MM-dd") puis une autre variable addDate qui récupère la date obtenu grâce à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String addDate = tdate.format(ddate.getDate());
    //ddate étant ma variable de type Date; Date ddate = DateChooser.getDate();
    Voici le code avec les modifications :
    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
        private void ButtonConfirmerDemandeActionPerformed(java.awt.event.ActionEvent evt) {                                                       
     
     
            Date ddate = DateChooser.getDate();
            String LoGeo = MenuDeroulant_LocaGeo.getSelectedItem().toString();
            String LiResto = MenuDeroulant_LieuxResto.getSelectedItem().toString();
            String eqpmtEns = MenuDeroulant_EquipmntEns.getSelectedItem().toString();
            String desAva = TxtArea_desAva.getText();
            String PrioAgent = Choix_PrioAgent.getSelectedItem().toString();
     
            if(ddate.equals("") || LoGeo.equals("") || LiResto.equals("") || eqpmtEns.equals("") || desAva.equals("") || PrioAgent.equals("")){
                JOptionPane.showMessageDialog(rootPane, "Certains champs sont vides", "Error", 1);
            }
            else {
                try{
                    String query =  "INSERT INTO avarie"+
                                    "(`des_avarie`, `id_eqpmt` ,`prio_agent`, `date_creation`,`des_lieuDsetabliss`)"+
                                    " values "+
                                    "( ?, (SELECT id_eqpmt FROM `equipement` WHERE des_eqpmt = '"+eqpmtEns+"' ),'"+PrioAgent+"',? , '"+LiResto+"' )" ;
                    // INSERT INTO column_1 ( val_1, val_from_other_table ) VALUES('val_1', (SELECT  val_2 FROM table_2 WHERE val_2 = something))
     
                    con = Connectionz.getConnection();
                    pst = con.prepareStatement(query);
                    pst.setString(1, desAva);
                    SimpleDateFormat tdate = new SimpleDateFormat("yyyy-MM-dd");
                    String addDate = tdate.format(ddate.getDate());
                    pst.setString(2, addDate);
     
                    pst.executeUpdate();
                    pst.close();
     
                    JOptionPane.showMessageDialog(null, "Enregistrement de la demande avec succès");
     
                }catch(Exception ex){
                    ex.printStackTrace();
                    JOptionPane.showMessageDialog(null, "Erreur d'insertion des données pour une demande d'intervention");
                }   
            }  
        }
    Je m'excuse si les termes que j'emploie ne sont pas explicite..

    Merci encore pour ta réponse.

  5. #5
    Nouveau membre du Club Avatar de ImBehoRE
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2018
    Messages : 23
    Points : 31
    Points
    31
    Par défaut Résolue
    Merci pour ton aide, néamoins je n'ai pas eu besoin d'utiliser la JAVADoc.

    Voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
        private void ButtonConfirmerDemandeActionPerformed(java.awt.event.ActionEvent evt) {                                                       
     
            Date ddate = DateChooser.getDate() ;
            SimpleDateFormat tdate = new SimpleDateFormat("yyyy-MM-dd");
            String addDate = tdate.format(ddate);
            String LoGeo = MenuDeroulant_LocaGeo.getSelectedItem().toString();
            String LiResto = MenuDeroulant_LieuxResto.getSelectedItem().toString();
            String eqpmtEns = MenuDeroulant_EquipmntEns.getSelectedItem().toString();
            String desAva = TxtArea_desAva.getText();
            String PrioAgent = Choix_PrioAgent.getSelectedItem().toString();
     
            if(ddate.equals("") || LoGeo.equals("") || LiResto.equals("") || eqpmtEns.equals("") || desAva.equals("") || PrioAgent.equals("")){
                JOptionPane.showMessageDialog(rootPane, "Certains champs sont vides", "Error", 1);
            }
            else {
                try{
     
                    String query =  "INSERT INTO avarie"+
                                    "(`des_avarie`, `id_eqpmt` ,`prio_agent`, `date_creation`,`des_lieuDsetabliss`)"+
                                    " values "+
                                    "( ?, (SELECT id_eqpmt FROM `equipement` WHERE des_eqpmt = '"+eqpmtEns+"' ),'"+PrioAgent+"','"+addDate+"' , '"+LiResto+"' )" ;
     
                    con = Connectionz.getConnection();
                    pst = con.prepareStatement(query);
                    pst.setString(1, desAva);
                    pst.executeUpdate();
                    pst.close();
     
                    JOptionPane.showMessageDialog(null, "Enregistrement de la demande avec succès");
     
                }catch(Exception ex){
                    ex.printStackTrace();
                    JOptionPane.showMessageDialog(null, "Erreur d'insertion des données pour une demande d'intervention");
                }   
            }  
        }
    Donc j'ai modifier ma requête et également mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            SimpleDateFormat tdate = new SimpleDateFormat("yyyy-MM-dd");
            String addDate = tdate.format(ddate);// Ici j'ai également mis ddate à la place de ddate.getDate()
    Avant la requête.

    Je sais que c'est pas propre, mais cella fonctionne

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

Discussions similaires

  1. [ZF 1.11] insertion de date dans la base de donnée
    Par Invité dans le forum Zend Framework
    Réponses: 4
    Dernier message: 20/06/2011, 01h41
  2. Réponses: 5
    Dernier message: 11/02/2010, 23h41
  3. Probléme d'insertion de la date dans la base access
    Par chahinaz21 dans le forum VB.NET
    Réponses: 2
    Dernier message: 30/11/2009, 21h33
  4. [MySQL] Enregistrer une date dans la base de données
    Par tkhchkhiche dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/09/2009, 07h18
  5. Probleme d'ajout d'une date dans un base de donnée access(conversion)
    Par jacko842 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 20/01/2008, 12h27

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