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 :

Formatage chaine to date and insertion dans table sql oracle


Sujet :

JDBC Java

  1. #1
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 74
    Points : 39
    Points
    39
    Par défaut Formatage chaine to date and insertion dans table sql oracle
    svp j'ai ce bout de 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
     
     import java.io.PrintStream;
    import java.sql.Date;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.text.*;
    import java.time.LocalDate;
    import java.time.Month;
    import java.time.format.DateTimeFormatter;
    import com.sdzee.*;
     
        public class testeDate {
            public static void main(String[]args) throws ParseException, SQLException {
     
               Statement st=connexion.connecter();
     
     
               String strDate = "31-12-2011";
     
               SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
               java.sql.Date effect_from = new java.sql.Date(formatter.parse(strDate).getTime()); 
     
               //System.out.println("String converted to java.sql.Date :" + effect_from);
     
               int statut = st.executeUpdate( "insert into testdate values('"+effect_from+"')" );
     
     
     
     
     
        }
        }
    connexion.connecter(); contient le code de connexion a la base de donnée et retoruner unobjet ResultStatement
    lors que je compile ce code j'ai cette erreur :Exception in thread "main" java.sql.SQLDataException: ORA-01861: literal does not match format string
    svp qui peut me guider comment je résout ce problème

  2. #2
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    Salut,
    il faut utiliser un preparedStatement.

    Eric

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    949
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 949
    Points : 1 857
    Points
    1 857
    Par défaut
    Bonjour,

    Votre code a quelques erreurs.

    Tout d'abord, le format que vous indiquez n'affecte pas effect_from . Le format ne fait pas partie de la date elle-même. Un formateur permet de passer d'une date à une représentation textuelle et vice versa, mais la date elle-même est inchangée. Dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "insert into testdate values('"+effect_from+"')"
    effect_from est une date, le format indiqué plus tôt par SimpleDateFormat n'a pas d'effet sur elle. Quand vous l'ajoutez au texte, Java appelle sa méthode toString dont le format par défaut est année-mois-jour. Si vous voulez utiliser un format précis, il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "insert into testdate values('" + formatter.format(effect_from) +"')"
    Mais l'erreur la plus grave, c'est celle que vous a indiqué jeffray03. Il ne faut jamais construire une requête SQL en y mettant directement une variable. Si cette variable contient des caractères spéciaux du SQL, vous pouvez avoir des bogues. Vous vous exposez également à des attaques par injection SQL (les pirates adorent). La solution, c'est d'utiliser la classe PreparedStatement, qui gère les caractères spéciaux. De plus, PreparedStatement gère lui-même les formats de date : vous vous êtes fatigué pour rien!

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/07/2010, 13h15
  2. Découpage chaine et Insertion dans table
    Par star dans le forum SQL
    Réponses: 1
    Dernier message: 09/04/2008, 12h02
  3. [Conception] boucle insertion dans table
    Par Invité dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 15/03/2006, 09h38
  4. Insertion dans table SQL server (Trigger) Aidz moi SVP????
    Par pop bob dans le forum Développement
    Réponses: 2
    Dernier message: 30/07/2005, 23h55
  5. Réponses: 3
    Dernier message: 19/11/2004, 21h48

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