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 :

les dates : java/acess


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de kalina
    Femme Profil pro
    Développeur Java
    Inscrit en
    Avril 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2009
    Messages : 220
    Par défaut les dates : java/acess
    Bonjour tout le monde,
    Eh bien moi j'ai un problème lors de l'insertion d'une date dans une base de données acess. Je récupère ma date à partir d'un jTextField comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    String dateRecuperee=jTextField.getText();
    Date dateInser=null;
    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
    		        try {
    	        	dateInser = (Date) format.parse(dateRecuperee);
    	        	} 
    	        catch (java.text.ParseException ex) {
    	            ex.printStackTrace();
    	        }
    puis je me connecte à ma base et j'execute la requête suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    statement.executeUpdate("insert into maTable values (new java.sql.Date(dateInser.getTime())");
    là l'insertion se fait mais le problème c que la date inserée n'est pas la même que celle que j'ai tapé; par exemple si je saisie 05/04/2009, la date inserée est le 22/06/1905.J'y comprends rien pourtant ma date est bien une java.sql.Date et mon champ dans la la table est de type date, alors où est le problème ?
    Si quelqu'un peut m'aider... Merci d'avance.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    statement.executeUpdate("insert into maTable values (new java.sql.Date(dateInser.getTime())");
    ca risque pas d'insérer grand chose çà, c'est même pas du sql correct. Tu peux nous donner le vrai code d'insertion?

  3. #3
    Membre expérimenté Avatar de kalina
    Femme Profil pro
    Développeur Java
    Inscrit en
    Avril 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2009
    Messages : 220
    Par défaut
    c'est juste, mon code risque pas d'inserer grand chose comme ça, voici le bon code:
    je transforme ma date en java.sql.Date:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.Date dateSql = new java.sql.Date(dateInser.getTime());
    ensuite je me connecte à ma base et j'insère ma dateSql avc la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    statement.executeUpdate("insert into maTable values("+dateSql+")");
    voilà, j'espère que quelqu'un peut m'aider.
    merci beaucoup

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    en faisant comme ca, tu va passer par dateSql.toString(), dont la forme dépend de la plateforme sur laquelle tourne ton java, ce que le serveur de base de donnée ne connais pas, et ce qui amènera inévitablement des mélanges entre les mois / jours / années.

    Le mieux, c'est de passe par un preparedStatement

  5. #5
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut Format Access
    En général, il vaut mieux passer par un preparedStatement mais comme tu utilises une base Access, je suppose que tu passes par le driver ODBC:JDBC.
    Au cas où le preparedStatement pour une date ne fonctionnerait pas avec ODBC:JDBC et Access, voici une alternative :

    Pour insérer une date dans un champ-date Access, il faut utiliser la syntaxe : #mm/dd/yyyy# (ça ne se devine pas )
    Ex : pour insérer le 31 octobre 2007, il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    statement.executeUpdate("INSERT INTO maTable (MaDate) VALUES(#10/31/2007#)")
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  6. #6
    Membre expérimenté Avatar de kalina
    Femme Profil pro
    Développeur Java
    Inscrit en
    Avril 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2009
    Messages : 220
    Par défaut insertion réussite!
    salut tout le monde,merci bcp pour votre aide, j'sais pa si j'ai le bon code mais en tous cas les deux méthodes marche,voilà ce que j'ai fait:
    1ière meth:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    String dateRecuperee="04/07/2009";
    Date dateInser=null;
    SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
    dateInser = (Date) format.parse(dateRecuperee)java.sql.Date dateSql = new java.sql.Date(dateInser.getTime());
    String sql = "INSERT INTO maTable  (maDate) VALUES(?)";
                PreparedStatement statement = con.prepareStatement(sql);
                statement.setDate(1,dateSql);
                statement.executeUpdate();
    et pour la deuxième:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stmt.executeUpdate("INSERT INTO Table1  VALUES(5,#"+dateSql+"#)");
    me reste maintenant le problème de la saisie de la date dans le jTextField, en effet ma date a le format "MM/dd/yyyy" et moi j'aimerai saisir ma date sous le format "commun" ie: "dd/MM/yyyy";est-ce qu'il ya une méthode simple pour remedier à ça?
    merci bcp

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

Discussions similaires

  1. Gérer les dates en Java
    Par Kagami dans le forum Collection et Stream
    Réponses: 15
    Dernier message: 05/06/2015, 14h48
  2. Java - manipuler les dates
    Par dompty dans le forum Général Java
    Réponses: 7
    Dernier message: 27/04/2011, 14h13
  3. gérer les date en java
    Par sampaiX dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 09/05/2010, 17h24
  4. Help!! Probleme avec les dates sur SQL SERVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 03/08/2006, 16h55
  5. opérations sur les dates
    Par coucoucmoi dans le forum Débuter
    Réponses: 2
    Dernier message: 12/08/2003, 11h45

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