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 :

Mise à jour d'une date dans MySQL


Sujet :

JDBC Java

  1. #1
    Membre habitué Avatar de champijulie
    Inscrit en
    Mai 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 147
    Points : 131
    Points
    131
    Par défaut Mise à jour d'une date dans MySQL
    Bonjour à tous,

    J'essaie d'insérer une date de type Date sous Java dans une date dans une table MySQL.
    Voici 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
    static public boolean miseAjourAbsence (Absence abs){
    		boolean succes = false;
    		Connection conn = null;
    		PreparedStatement st = null;
    		// ResultSet rs = null;
    		String query = "UPDATE absence SET ABS_dateDeb = ?, ABS_dateFin = ?, ABS_raison = ?, TAB_idTypeAbs = ?, INT_idIntervenant = ? WHERE ABS_idAbs = "+abs.getIdAbsence()+";";
    		try {
    			conn = Connexionbis.getConnection();
    			st = conn.prepareStatement(query);
    			st.setDate(2,(Date)abs.getDebutAbsDate());
    			st.setDate(3,(Date)abs.getFinAbsDate());
    			st.setString(4,abs.getRaisonAbsence());
    			st.setString(5,abs.getTypeAbsence());
    			st.setString(6,abs.getInterv().getIdIntervenant());
    			st.executeUpdate();
    			succes = true;
    		}
    		catch (Exception e) {
    			throw new DAOException(e);
    		} finally {
    			try {
    				if(st != null) {
    					st.close();
    				}
    				if(conn != null) {
    					conn.close();
    				}
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    		return succes;
    	}
    Je fais cela après avoir fait comme import :
    mais les fonctions setDate ne fonctionne pas dans ce cas et si j'importe java.sql.Date, il y a un conflit entre les deux dates. Voici le message d'erreur que me renvoie la console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Exception in thread "main" dao.DAOException: java.lang.ClassCastException: java.util.Date
    	at methodesBD.BDAbsence.miseAjourAbsence(BDAbsence.java:71)
    	at methodesBD.BDTest.main(BDTest.java:29)
    Caused by: java.lang.ClassCastException: java.util.Date
    	at methodesBD.BDAbsence.miseAjourAbsence(BDAbsence.java:62)
    	... 1 more
    Je précise que dans ma base de données, les deux dates sont de types datetime.

    Merci d'avance de me répondre .
    champijulie

  2. #2
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    import java.util.Date
    IL ne faut pas faire cette import la mais java.sql.Date. PreparedStateement demande une date de type java.sql.Date (http://java.sun.com/j2se/1.5.0/docs/...Statement.html)

    Donc pas de cast en Date avec java.util.Date. Et tu ne peux pas faire un cast non plus en java.sql.Date d'une java.util.Date car java.sql.Date extends java.util.Date


    Plus de precisions ICI
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  3. #3
    Membre habitué Avatar de champijulie
    Inscrit en
    Mai 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 147
    Points : 131
    Points
    131
    Par défaut
    Coucou,

    merci pour ta réponse mais le problème, c'est que j'utilise la jre 1.4 donc je suis obligée de caster en Date mais tu as peut-être une autre solution pour que je puisse insérer la date?

    Merci
    champijulie

  4. #4
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Citation Envoyé par champijulie
    merci pour ta réponse mais le problème, c'est que j'utilise la jre 1.4 donc je suis obligée de caster en Date.
    Je ne vois pas du tout le rapport? Peux-tu m'expliquer ce qui te deranges? D'utiliser java.sql.Date au lieu de java.util.Date? (Si t'utilises le bon pas besoin de caster)

    Tu n'as qu'a faire une methode qui te donne une java.util.Date en entrée et qui te retourne une java.sql.Date en sortie si tu trouves ca plus simple.
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  5. #5
    Membre habitué Avatar de champijulie
    Inscrit en
    Mai 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 147
    Points : 131
    Points
    131
    Par défaut
    Bonjour ,

    en fait il n'y a rien qui me dérange mais j'ai importé la librairie sql.Date et, sous Eclipse, la nature de l'erreur est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The method setDate(int,Date) in the type PreparedStatement is not applicable for the arguments (int,Date).
    C'est pour cela que je pensais qu'il y avait un conflit et que j'étais obligée de caster mais cela ne viens surement pas de là d'après ta réponse et je trouve une erreur comme cela bizarre étant donné que les types des arguments sont identiques.
    Voila.
    Je vais me pencher sur ton autre solution bien que je ne vois pas du tout comment je pourrais faire.

    Merci encore pour ta réponse .
    champijulie

  6. #6
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Hummmmm! As-tu supprimer l'ancien import de java.util.Date?
    Car c'est bizarre. La methode setDate de PreparedStatement prend bien un int et un java.sql.Date.



    abs.getFinAbsDate() =====>>>>>> CA TE RENVOI QUOI COMME TYPE DE DATE?

    Il faut que ca te renvoi un java.sql.Date ou bien que tu fasses une fonction qui te reconstruise une java.sql.Date avec ta java.util.Date! Je ne vois pas comment t'expliquer plus clairement désolé.
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  7. #7
    Membre habitué Avatar de champijulie
    Inscrit en
    Mai 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 147
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    je te remercie beaucoup pour tes explications et j'ai compris ce que tu voulais dire. En effet, abs.getDebutAbsDate() me renvoyait un date de type util.Date doncje vais créer une méthode qui va me permettre de transformer un type util.Date en sql.Date.

    Voili voilou.
    Encore merci
    champijulie

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

Discussions similaires

  1. [AC-2007] modification et mise à jour d'une date dans un formulaire
    Par lemautchisig dans le forum IHM
    Réponses: 1
    Dernier message: 01/03/2011, 11h52
  2. Mise à jour d'une date dans un enregistrement
    Par Zoethibault dans le forum VBA Access
    Réponses: 1
    Dernier message: 23/12/2009, 14h03
  3. [AC-2003] Mise à jour d'une date dans une table en fonction d'un critère
    Par carlostropico dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 09/12/2009, 18h07
  4. Modifier le champ jour d'une date dans mysql
    Par sandddy dans le forum Requêtes
    Réponses: 6
    Dernier message: 12/03/2008, 09h09
  5. [MySQL] mise à jour d'une date dans une table
    Par jophp dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/10/2006, 20h48

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