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

Collection et Stream Java Discussion :

Transformer GregorianCalendar en java.sql.date


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Par défaut Transformer GregorianCalendar en java.sql.date
    Bonjour !

    Cela fait plusieurs jours que je butte sur ce problème...

    j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.Date dateSQL = new java.sql.Date(date.getTime().getTime());
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     java.sql.Date dateSQL = new java.sql.Date(date.getTimeInMillis());
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.Date dateSQL = java.sql.Date.valueOf(date.get(GregorianCalendar.YEAR)+ "-" + (date.get(GregorianCalendar.MONTH)) + "-" + date.get(GregorianCalendar.DAY_OF_MONTH));
    J'ai surement essayé d'autres choses mais là je m'en souviens plus.

    sinon le context :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    java.sql.PreparedStatement p1 = db.prepareStatement("select * from patient where nom=? and prenom=? and dateN=?");
                p1.setObject(1, nom, Types.VARCHAR);
                p1.setObject(2, prenom, Types.VARCHAR);
                // java.sql.Date dateSQL = java.sql.Date.valueOf(date.get(GregorianCalendar.YEAR)+ "-" + (date.get(GregorianCalendar.MONTH)) + "-" + date.get(GregorianCalendar.DAY_OF_MONTH));//conversion de la date gregorian calendar en type Date sql
                java.sql.Date dateSQL = new java.sql.Date(date.getTime().getTime());
     
                p1.setObject(3, dateSQL, Types.DATE);
                ResultSet result = p1.executeQuery();
    Merci pour vos futurs réponses

  2. #2
    Membre averti
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.Date dateSQL = new java.sql.Date( date.getGregorianChange().getTime());
    je viens d'essayer ça...

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.Date dateSQL = new java.sql.Date(date.getTime().getTime());
    est correct, bien que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.Date dateSQL = new java.sql.Date(date.getTimeInMillis());
    évite la création d'un objet inutile. Quel est votre problème?

  4. #4
    Membre averti
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Par défaut
    Je pense que le problème ne vient pas de la transformation mais plutôt d'un souci avec mon resultset.

    C'est une page pour rechercher une personne par son nom, prénom date de naissance dans une base de donnée. Une fois qu'on a les trois, on crée une instance DMA.

    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
    package Admission;
     
    import Princeton.DMA;
     
     
    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    import java.sql.DriverManager;
    // </editor-fold> 
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Types;
    import java.util.GregorianCalendar;
    import java.util.logging.Level;
    import java.util.logging.Logger;
     
    public class IAdmissionLienBD {
     
        // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
        // #[regen=yes,id=DCE.473E37C0-E8F5-799E-B860-5FEE7A6E7513]
        // </editor-fold> 
        public IAdmissionLienBD() {
        }
     
        public DMA patient(String nom, String prenom, GregorianCalendar date) {
            DMA retour = null;
            try {
                try {
                    Class.forName("com.mysql.jdbc.Driver");
                } catch (ClassNotFoundException ex) {
                    Logger.getLogger(IAdmissionLienBD.class.getName()).log(Level.SEVERE, null, ex);
                }
                java.sql.Connection db = DriverManager.getConnection(accueil.NewMain.bd, accueil.NewMain.user, accueil.NewMain.mdp);
                java.sql.PreparedStatement p1 = db.prepareStatement("select * from patient where nom=? and prenom=? and dateN=?");
                p1.setObject(1, nom, Types.VARCHAR);
                p1.setObject(2, prenom, Types.VARCHAR);
                // java.sql.Date dateSQL = java.sql.Date.valueOf(date.get(GregorianCalendar.YEAR)+ "-" + (date.get(GregorianCalendar.MONTH)) + "-" + date.get(GregorianCalendar.DAY_OF_MONTH));//conversion de la date gregorian calendar en type Date sql
                 java.sql.Date dateSQL = new java.sql.Date(date.getTime().getTime());
                //  java.sql.Date dateSQL = date.getGregorianChange();
                //java.sql.Date dateSQL = new java.sql.Date(date.getGregorianChange().getTime());
                //java.sql.Date dateSQL = new java.sql.Date(date.getTimeInMillis());
     
                p1.setObject(3, dateSQL, Types.DATE);
                ResultSet result = p1.executeQuery();
                System.out.println("IAdmissionLienBD : on a (ou pas) trouvé ce patient :");
              //  result.toString();
     
     
                boolean next = result.next();
                if (!next) {
                    retour = null;
                    System.out.println("On n'a pas trouvé le patient dans la bd");
                } else {
                   // retour = result.getString(1);
                    GregorianCalendar dateN = new GregorianCalendar();
                    GregorianCalendar dateC = new GregorianCalendar();
                    dateN.setTime(result.getDate(5));
                    dateN.toString();
                    dateC.setTime(result.getDate(12));
                    String nomDMA = result.getString(2);
                    nomDMA.toString();
                    String prenomDMA = result.getString(3);
                    prenomDMA.toString();
                   // System.out.println("Les deux dates sont-elles identiques ?");
                  //  System.out.println(dateN.equals(date));
                    retour = new DMA(nomDMA, prenomDMA, dateN);
                    retour.setAdresse(result.getString(7));
                  //  retour.setDateCreation(dateC);
                    retour.setLVenue(null); // TO DO : faire requête eventuellement dans une autre classe lienBD
     
                    retour.setNomMedTraitant(result.getString(9));
                    retour.setNumSecu(result.getString(10));
                    retour.setSexe(result.getString(4));
                    retour.setLieuNaissance(result.getString(6));
                    retour.setNationalite(result.getString(8));
                    retour.setIPP(result.getInt(1));
     
     
                    System.out.println("On a trouvé le patient dans la bd");
     
                }
     
     
            } catch (SQLException ex) {
                /** message d'erreur 
                 */
                System.out.println(ex.getMessage() + "ahhhhhh_de_IAdmissionLienBD");
                 ex.printStackTrace();
     
            }
            return retour;
        }
     
        public void creerPatientBD(DMA p) {
            try {
                Class.forName("com.mysql.jdbc.Driver"); //connexion à la base de données
     
                java.sql.Connection db = DriverManager.getConnection(accueil.NewMain.bd, accueil.NewMain.user, accueil.NewMain.mdp);
                java.sql.Date dateASQL = java.sql.Date.valueOf(p.getDateCreation().get(GregorianCalendar.YEAR) + "-" + (p.getDateCreation().get(GregorianCalendar.MONTH)) + "-" + p.getDateCreation().get(GregorianCalendar.DAY_OF_MONTH));
                java.sql.Date dateNSQL = java.sql.Date.valueOf(p.getDateN().get(GregorianCalendar.YEAR) + "-" + (p.getDateN().get(GregorianCalendar.MONTH)) + "-" + p.getDateN().get(GregorianCalendar.DAY_OF_MONTH));
                java.sql.Statement statement = db.createStatement();
                statement.executeUpdate("INSERT INTO patient(ipp,nom,prenom,sexe,datN,lieu,adresse,nationalite,nomMedT,nir,dateactiv)" + "VALUES ('" + p.getIPP() + "','" + p.getNom() + "','" + p.getPrenom() + "','" + dateNSQL + "','" + p.getSexe() + "','" + p.getLieuNaissance() + "','" + p.getAdresse() + "','" + p.getNationalite() + "','" + p.getNomMedTraitant() + "','" + p.getNumSecu() + "','" + dateASQL + "');");
                db.close();
            } catch (Exception ex) {
                /** message d'erreur 
                 */
                System.out.println(ex.getMessage() + "erreur dans la création du patient");
            }
        }
    }
    l'output donne :
    date calendar issue de l'entrée utilisateur
    23
    2
    1987
    IAdmissionLienBD : on a (ou pas) trouvé ce patient :
    On n'a pas trouvé le patient dans la bd
    BUILD SUCCESSFUL (total time: 19 seconds)
    Au départ je l'avais implémenté pour que dans la recherche on prenne juste le nom et prénom et ça marchait. Je m'étais dit que je galèrerai avec les dates donc j'ai voulu vérifier le reste avant. Je galère bien, ça c'est sur, mais à force de chercher la ptite bête, j'ai ptet modifié le code et créer d'autres erreurs
    Ce qui m'aide le moins à comprendre c'est qu'avec la recherche avec la date, je l'ai vu fonctionner sur l'ordi de ma collègue ! Et chez moi ça marche pas... C'est peut-être un problème de version ?
    On a le même netbeans, le même mysql, peut être des driver différents mais je crois pas.

  5. #5
    Membre averti
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Par défaut
    Voilà la table concerné :


    Uploaded with ImageShack.us

  6. #6
    Membre averti
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Par défaut
    Je devrais pas rentrer dans le if !next car la personne est dans la base de donnée

    J'ai verifié le gregorian calendar en paramètre de la fonction est bon, le dateSQL aussi semblerait. je comprends pas pourquoi ma requête donne rien...

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

Discussions similaires

  1. transformation de String to java.sql.date
    Par opensource dans le forum Langage
    Réponses: 7
    Dernier message: 07/03/2008, 17h23
  2. Cast de java.util.DATE à java.sql.DATE
    Par mnemonic78 dans le forum Langage
    Réponses: 6
    Dernier message: 05/01/2007, 08h21
  3. Conflit entre java.util.Date et class java.sql.Date
    Par vonitiana dans le forum Langage
    Réponses: 3
    Dernier message: 30/06/2006, 11h43
  4. de java.sql.Date à java.utile.Date
    Par Sniper37 dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 23/05/2006, 16h10
  5. [java.sql.Date] format compatible tout sgbd ?
    Par djskyz dans le forum JDBC
    Réponses: 8
    Dernier message: 15/09/2004, 11h28

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