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 :

insert et chmaps de type Date


Sujet :

JDBC Java

  1. #1
    Membre confirmé Avatar de yasmine*
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Par défaut insert et chmaps de type Date
    bonsoir à tous
    Pour faire une insertion dans ma table Vente j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
             Connection con=null ;
              Statement statement=null;
              int res ;
              Date date;
              date=new SimpleDateFormat("dd-MM-yyyy").parse("31/02/2000") ;
              statement = con.createStatement();
              res=statement.executeUpdate("insert into Vente values(1,'1',
                                                        '0789762478','ord1',2,1,'"+date+"')") ;
    l'insertion ne se fait pas et j'ai le msg d'erreur suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Exception in thread "main" com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data truncated for column 'date_vente' at row 1
    la table vente est composée de:
    champs-->int
    champs2,champs3,champs4-->String
    champs5,champs6-->int
    champs7-->de type Date et c'est ce champs la qui pose probleme.

    merci pour votre aide

  2. #2
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    as tu essayé sans les ' ' ?

  3. #3
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    plus simple le format de ta date ne matche pas avec le Pattern passé en paramètre du SimpleDateFormat...

    Essayes avec dd/MM/yyyy en params du SimpleDateFormat.

    Mais même celà n'est pas très beau comme bidouille. Il vaudrait mieux que tu passes par un PreparedStatement c'est plus propre et secure comme façon de faire

  4. #4
    Membre confirmé Avatar de yasmine*
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Par défaut
    savez vous me dire la signification de l'erreur:
    Data truncated; out of range for column 'date_vente' at row 1

    merci d'avance

  5. #5
    Membre émérite
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Par défaut
    Que la valeur que tu as essayé de rentrer dans ce champ était plus grande que la taille de ce champ.

  6. #6
    Membre confirmé Avatar de yasmine*
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Par défaut
    y a t'il un tuto qui traite l'insertion dans une bd et les champs de type date.

  7. #7
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Regardes un peu la doc de la classe que je t'ais filé, il n'y a rien de sorcier:

    Citation Envoyé par javadoc
    An object that represents a precompiled SQL statement.
    A SQL statement is precompiled and stored in a PreparedStatement object. This object can then be used to efficiently execute this statement multiple times.
    Note: The setter methods (setShort, setString, and so on) for setting IN parameter values must specify types that are compatible with the defined SQL type of the input parameter. For instance, if the IN parameter has SQL type INTEGER, then the method setInt should be used.
    If arbitrary parameter type conversions are required, the method setObject should be used with a target SQL type.
    In the following example of setting a parameter, con represents an active connection:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
                                         SET SALARY = ? WHERE ID = ?");
       pstmt.setBigDecimal(1, 153833.00)
       pstmt.setInt(2, 110592)
    et de mettre si tu veux mettre une date bah tu as la méthode setDate(java.sql.Date d)

  8. #8
    Membre confirmé Avatar de yasmine*
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Par défaut
    voila j'ai suivi ton conseil et j'ai tapé le code en utilisant un PreparedStatement mais je ne sais pas quoi mette comme parametre pour la date:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    PreparedStatement preparedStatement = connection.prepareStatement(sql);
    		preparedStatement.setInt(1,1) ;
    		preparedStatement.setString(2,"1");
    		preparedStatement.setString(3,"0789762478");
    		preparedStatement.setString(4,"ord1");
    		preparedStatement.setDouble(5,2);
    		preparedStatement.setInt(6,1);
    		preparedStatement.setDate(7,la je mets koi ???)

  9. #9
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setDate(7,new java.sql.Date(maDate.getTime());

  10. #10
    Membre confirmé Avatar de yasmine*
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Par défaut
    je ne sais pas alors pas du tout manipuler les dates alors dsl si ma question est bete:maDate est égale a quoi ?

  11. #11
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Bah un objet java.util.Date que tu crées selon tes besoins...

    Cf les classes java.util.Date, Calendar et SimpleDateFormat
    Et la FAQ: http://java.developpez.com/faq/java/?page=langage_date

  12. #12
    Membre confirmé Avatar de yasmine*
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Par défaut
    j'ai mis ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preparedStatement.setDate(7,new SimpleDateFormat("dd/MM/yyyy").parse("31/02/2000"));
    mais ca marche pas.

  13. #13
    Membre confirmé Avatar de yasmine*
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Par défaut
    c'est bon j'ai utilisé setObject à la place de setDate et ça marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    preparedStatement.setObject(7,new SimpleDateFormat("dd/MM/yyyy").parse("31/02/2000"));

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

Discussions similaires

  1. [MySQL] Insertion MySQL champ de type Date
    Par guiguikawa dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/01/2012, 16h20
  2. BULK INSERT et type Date
    Par HULK dans le forum Développement
    Réponses: 2
    Dernier message: 25/08/2009, 20h39
  3. [Oracle] insertion heure dans colonne type date
    Par erox44 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/04/2008, 22h03
  4. [MySQL] Insertion avec un champ de type date
    Par souadmaa dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 04/02/2008, 12h27
  5. insertion d'un type date dans une table access
    Par monstour dans le forum ASP
    Réponses: 7
    Dernier message: 18/06/2004, 17h57

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