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 :

Ajouter un attribut de type date dans MySql


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Par défaut Ajouter un attribut de type date dans MySql
    Bonjour à tous,

    Je suis en train d'exécuter une requête sql:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String sql="Insert into testdate.reunion(date_reunion)values('"+reunion.getDate_reunion()+"')";
    avec date_reunion est un attribut de type date dans la classe Reunion.

    Je travaille avec Mysql comme SGBD qui contient une base de données testdate souslaquelle on trouve la table reunion avec un attribut date_reunion de type date aussi.

    Lorsque j'essaie d'exécuter ma requête, je reçois ce message d'erreur dans mon IDE:
    com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect date value: 'Fri Jan 13 12:01:39 CET 2012' for column 'date_reunion' at row 1
    Voiçi mon code de test d'ajout:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static void main(String[] args) {
     
    		Date date_reunion = new Date();
     
    		ReunionEdit re = new ReunionEdit();
    		Reunion reunion = new Reunion();
    		reunion.setDate_reunion(date_reunion);
    		re.AjouterReunion(reunion);
    	}
    Que dois-je faire?

    Merci pour votre aide!

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par L'aigle de Carthage Voir le message
    Que dois-je faire?
    Tu utilises une java.util.Date pour réaliser ton insertion. Utilise plutôt une java.sql.Date (FAQ).
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Par défaut
    Je conseillerai plutôt un objet de Calendar, comme GregorianCalendar.

  4. #4
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    L'utilisation du type java.util.Date ne pose pas de problème, c'est son format d'insertion.
    En concaténant la date dans la requête celle-ci se retrouve dans un format qui n'est pas forcément celui de la base de données visée.

    Il faut utiliser un PreparedStatement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String sql = "INSERT INTO testdate.reunion(date_reunion) VALUES (?)";
    //préparation de la requête
    PreparedStatement preparedStatement = connection.prepareStatement(sql);
    //on assigne la date
    preparedStatement.setObject(1, reunion.getDate_reunion());
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Par défaut
    Citation Envoyé par le y@m's Voir le message
    L'utilisation du type java.util.Date ne pose pas de problème, c'est son format d'insertion.
    En concaténant la date dans la requête celle-ci se retrouve dans un format qui n'est pas forcément celui de la base de données visée.

    Il faut utiliser un PreparedStatement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String sql = "INSERT INTO testdate.reunion(date_reunion) VALUES (?)";
    //préparation de la requête
    PreparedStatement preparedStatement = connection.prepareStatement(sql);
    //on assigne la date
    preparedStatement.setObject(1, reunion.getDate_reunion());
    J'ai utilisé votre solution, et j'ai eu comme message d'erreur celui-ci:
    com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?)' at line 1

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Par défaut
    Est ce qu'il s'agit d'une faute au niveau du programme ou bien ou niveau de la syntaxe de la requête, car je pense qu'elle est juste!

  7. #7
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par L'aigle de Carthage Voir le message
    avec date_reunion est un attribut de type date dans la classe Reunion.
    J'ajouterais de préférer l'utilisation des PreparedStatement pour structurer tes requêtes (FAQ).
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

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

Discussions similaires

  1. Problème insertion type date dans la base MySQL
    Par elhou80 dans le forum JDBC
    Réponses: 3
    Dernier message: 12/11/2013, 11h57
  2. Réponses: 4
    Dernier message: 22/12/2011, 16h54
  3. Réponses: 2
    Dernier message: 29/05/2007, 16h49
  4. Ajouter un champs de type " Date " dans ma base ac
    Par hysteresis dans le forum Langage SQL
    Réponses: 16
    Dernier message: 10/10/2005, 16h10
  5. insertion d'un type date dans une table access
    Par monstour dans le forum ASP
    Réponses: 7
    Dernier message: 18/06/2004, 16h57

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