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 :

Problème de format de date entre Java et Oracle


Sujet :

Collection et Stream Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 265
    Points : 97
    Points
    97
    Par défaut Problème de format de date entre Java et Oracle
    Bonjour,

    Je souhaite faire un programme qui crée des données dans une table Oracle mais j'ai un souci avec les dates.

    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
    String[] chaine_tempo= new String[2];
    chaine_tempo[0]=supannaliaslogin;
    String mail =chaine_tempo[0]+"@"+SMTP_Domain_toto;
     
    SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yy" );
    java.util.Date datejour= new java.util.Date();
    String dateString = formatter.format(datejour);
     
    System.out.println("coucou je vais écrire"+ " no_individu :" + id_individu + " datejour : " + dateString);
     
    stmt.executeUpdate("INSERT INTO INDIVIDU_E_MAIL (NO_INDIVIDU,NO_E_MAIL,D_CREATION,D_MODIFICATION) " +
    "VALUES ("+ id_individu +", "+ mail +", " + dateString +", "+ dateString+")");
    La dateString est alors au bon format de date mais bien sûr, c'est une string et non une date et mon problème vient de là car dans la table dans laquelle je souhaite écrire, c'est une date.

    J'ai donc ce message d'erreur:
    ORA-00984: un nom de colonne n'est pas autorisé ici
    J'ai essayé de parser cette date String mais dans ce cas elle n'a plus le format souhaité à savoir DD/MM/yy... Cela me donne une ligne avec par exemple "Sun 16 heure etc ....."

    Quelqu'un saurait-il m'indiquer comment gérer cela ?

    Merci d'avance pour vos propositions.

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 075
    Points : 7 981
    Points
    7 981
    Par défaut
    Une proposition serait d'utiliser eventuelement un preparedstatement qui a un belle methode setDate() qui devrait surement t'éviter ce genre d'ennui.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2012
    Messages
    3 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3 020
    Points : 16 092
    Points
    16 092
    Par défaut
    +1 pour le preparedstatement.

    Sinon, tu peux passer par un SimpleDateFormat pour récupérer un string qui représente ta date et utiliser la fonction oracle to_date dans ta requête.

    Edit : oups, lu ton code trop vite, le SimpleDateFormat y est déjà! Mais manque bien les to_char

  4. #4
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Bonjour,
    Comme l'a dit Wax78, l'idéal est d'utiliser un PreparedStatement et de passer dircetement la date en paramètre, sans s'occuper du format.

    Ceci dit ton problème actuel est du à l'absence de guillemets simples autour de tes champs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    stmt.executeUpdate("INSERT INTO INDIVIDU_E_MAIL (NO_INDIVIDU,NO_E_MAIL,D_CREATION,D_MODIFICATION) " +
    "VALUES ('"+ id_individu +"', '"+ mail +"', "' + dateString +"', '"+ dateString+"')"); //mieux
    Et de plus une date se gère avec un to_date en Oracle, afin de pas risquer de se planter sur le formattage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    stmt.executeUpdate("INSERT INTO INDIVIDU_E_MAIL (NO_INDIVIDU,NO_E_MAIL,D_CREATION,D_MODIFICATION) " +
    "VALUES ('"+ id_individu +"', '"+ mail +"', to_date('"+ dateString+"', 'dd/mm/yyyy'), to_date('"+ dateString+"', 'dd/mm/yyyy'))"); //encore mieux
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 265
    Points : 97
    Points
    97
    Par défaut
    Merci à tous pour vos réponses.En effet, les guillemets ont résolus mon pb....par contre je n'ai pas eu besoin d'utiliser to_date.
    NFHnv

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

Discussions similaires

  1. [AC-2003] Problème de format de date entre formulaire et table
    Par LIMITE dans le forum IHM
    Réponses: 6
    Dernier message: 28/07/2011, 17h37
  2. Problème de format de date
    Par pilou0013 dans le forum Access
    Réponses: 2
    Dernier message: 11/06/2006, 22h56
  3. [VB.net] problème de format de date
    Par cladsam dans le forum Windows Forms
    Réponses: 4
    Dernier message: 11/10/2005, 18h27
  4. Problème de lien sur date entre Access et MySQL-4.1
    Par michou42 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 04/04/2005, 23h31
  5. Problème de Format de date
    Par titititi007 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2003, 08h19

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