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 :

Mettre a jours une Date (java.sql.Date)


Sujet :

JDBC Java

  1. #1
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 75
    Points
    75
    Par défaut Mettre a jours une Date (java.sql.Date)
    Bonsoir,
    Comme le titre l'explique j'ai essayé de mettre a jours ma base de donnée avec la date courante,mais ca n'a pas marché !
    Voila mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                        java.util.Date now = new java.util.Date();
     
                        java.sql.Date NOW = new java.sql.Date(now.getTime());
    statement.executeUpdate("Update infosinscri Set DatePaiement = " + NOW + " where Cin =" + Cin)
    J'obient un date bizarre a la place d'aujourd'hui !
    voila ce que j'obtient ! :

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ce n'est pas comme ça (conversion en string) qu'on insère des dates en jdbc (ni la pluspart des données d'ailleurs). Utilisez des preparedStatements

  3. #3
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 75
    Points
    75
    Par défaut
    J'ai fait ce que vous avez mentionné Tchize mais j'ai obtenu une Exception de Type ArrayOutOfBounds Exception dasn la ligne en rouge !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                        
    java.util.Date now = new java.util.Date();
    java.sql.Date NOW = new java.sql.Date(now.getTime());
                                        String req = "Update infosinscri Set DatePaiement = ?  where Cin = ?";
                                        PreparedStatement ps = con.prepareStatement(req);
                                        ps.setDate(9, NOW);
                                        ps.setInt(1, Cin);
                                        int exe = ps.executeUpdate();

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    tu a lu la javadoc ??

    ps.setDate(9, NOW);

    pourquoi a tu mis 9 ?

    idem pour
    ps.setInt(1, Cin);


    lis la javadoc tu vas comprendre pourquoi il faut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ps.setDate(1, NOW);
    ps.setInt(2, Cin);

  5. #5
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 75
    Points
    75
    Par défaut
    Merci j'ai mal lu dans le début ...
    Mais un gros problème est posé !! j'ai tout essayé pour le résoudre toujours pas de solution !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    java.sql.Date NOW = new java.sql.Date(System.currentTimeMillis());
                                        String req = "Update infosinscri Set DatePaiement = ?  where Cin = ?";
                                        PreparedStatement ps = con.prepareStatement(req);
                                        ps.setDate(2, NOW);
                                        ps.setInt(1, Cin);
    Le résultat dans la BD est le suivant ! : 11/06/1905 !
    Est-ce normal ?
    J'ai même essayé avec un calendrier, puis avec la conversion d'un java.util.Date --> java.sql.Date .. et la solution que j'ai posté pour conclure .. toujours le même résultat ! Or je veut avoir la date système moi !

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    comment est défini DatePaiement?
    Comment récupérez vous "11/06/1905" ?

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 524
    Points
    9 524
    Billets dans le blog
    1
    Par défaut
    C'est pas possible de faire 2 fois la même erreur ou tu as mal recopié

    Comme le dit la doc, dans un PreparedStatement, le premier paramètre d'un setXXX(...) represente la position du "?" dans la requête en partant de 1.

    Si tu regarde ce que tu as fais, tu as mis Cin dans la colonne date et NOW dans Cin.
    Il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String req = "Update infosinscri Set DatePaiement = ?  where Cin = ?";
    PreparedStatement ps = con.prepareStatement(req);
    ps.setDate(1, NOW);
    ps.setInt(2, Cin);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    comment est défini DatePaiement?
    Comment récupérez vous "11/06/1905" ?
    Citation Envoyé par OButterlin Voir le message
    C'est pas possible de faire 2 fois la même erreur ou tu as mal recopié

    Comme le dit la doc, dans un PreparedStatement, le premier paramètre d'un setXXX(...) represente la position du "?" dans la requête en partant de 1.

    Si tu regarde ce que tu as fais, tu as mis Cin dans la colonne date et NOW dans Cin.
    Il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String req = "Update infosinscri Set DatePaiement = ?  where Cin = ?";
    PreparedStatement ps = con.prepareStatement(req);
    ps.setDate(1, NOW);
    ps.setInt(2, Cin);
    Je m'excuse c'est une betise car j'ai mal lu la javadoc, j'étais préssé de terminer le logiciel ...
    Cava, j'ai inversé les places dans preparedstatement ...
    Merci encore et désolé je m'excuse pour ce dérangement sérieusement !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/07/2010, 12h13
  2. Conversion java.utils.Date / java.sql.Date
    Par devroot dans le forum Général Java
    Réponses: 4
    Dernier message: 02/04/2010, 00h26
  3. Manipulation de date : java.sql.Date & Calendar
    Par LeNovice dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 25/09/2007, 15h59
  4. Cast de java.util.DATE à java.sql.DATE
    Par mnemonic78 dans le forum Langage
    Réponses: 6
    Dernier message: 05/01/2007, 08h21
  5. 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

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