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 :

problème avec Date


Sujet :

JDBC Java

  1. #1
    Membre régulier
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Points : 88
    Points
    88
    Par défaut problème avec Date
    Salut tout le monde ,

    je dispose d'une table omag_valeur constitué de 4 colonnes

    Date RefProduit PC LC

    Date/Heure Texte Numérique Numérique

    17/08/2008 P1 10 20

    dd/MM/yyyy


    et pour inserer des lignes je fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     req= "INSERT INTO omag_valeur VALUES (" + "'" + date + "'" + "," + "'"+RefProduit+"'" + "," + PC + "," + LC+ ")" ;
    avec date est un String (accepté meme si la colonne Date est de type Date/Heure)

    mon souci c'est que lorsque j'envoi la requete suivante pour afficher ces informations en fonction d'une date et un produit donnés par l'utilisateur

    String date="18/08/2008";
    String RefProduit="P1";

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String req="SELECT PC , LC FROM omag_valeur WHERE Date ='"+date+"' AND RefProduit ='"+RefProduit+"'";
    ici le SGBD (Acces) me renvoi l'erreur :

    Type de données incompatible dans l'expression du critère.


    j'ai essayer de convertir ce String en Date (java) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                     SimpleDateFormat dateStandardFormat = new SimpleDateFormat("dd/MM/yyyy");
     
                     Date dateSystem; 
     
                     try{
    	    dateSystem=dateStandardFormat.parse(date);
    	    }catch(Exception e){}	    
     
    	    System.out.println(dateSystem);
    il m'affiche : Sun Aug 17 00:00:00 GMT 2008

    et je remplace dans la requete date par dateSystem de type Date ,

    il me renvoi aussi la meme erreur ,

    Type de données incompatible dans l'expression du critère.

    incompatibilité de format encore,

    que doit-je faire SVP pour resoudre ce problème

    merci d'avance.

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    T'as essayé en retirant le simple quote?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String req="SELECT PC , LC FROM omag_valeur WHERE Date ="+dateSystem+" AND RefProduit ='"+RefProduit+"'";
    Sinon essaie en convertissant en date avant l'insertion, puis comparaison de dates.

  3. #3
    Membre régulier
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Points : 88
    Points
    88
    Par défaut
    merci beaucoup skuatamad pour votre reponse et votre patience avec moi,

    je met ces quotes car il me renvoi l'erreur suivant :

    Erreur de syntaxe (opérateur absent) dans l'expression 'Date =Sun Aug 17 00:00:00 GMT 2008 AND RefProduit ='MOHAMMADIA 24X12X6 ROUGE BRIQUE''.

    je pense que le problème est dans le format de la date

    celle qu'existe sur la table : 17/08/2008
    celle avec laquel il va faire la comparaison Sun Aug 17 00:00:00 GMT 2008

    si vous avez une idée en java SVP

  4. #4
    Expert éminent sénior
    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 : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Utilise un preparedstatement, çà évite les mauvaise surprise lorsque l'utilisateur décidera d'entrer des quotes dans ses références produit:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    PreparedStatement stm = connection.prepareStatement("SELECT PC , LC FROM omag_valeur WHERE Date =  ? AND RefProduit = ?");
    stm.setDate(1,dateSystem);
    stm.setString(2,refProduit);
    ResultSet rs = stm.executeQuery();
    C'est plus facile à lire, non? Et là pas de soucis de typage, les types sont directement corrects

  5. #5
    Membre régulier
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Points : 88
    Points
    88
    Par défaut
    merci tchize_ pour votre aide,

    je suis entrain de tester votre solution ,mais ça n'est pas accepté
    car mon date est de type Date ,mais de java.util.Date

    et stm.setDate(int,Date) Date de jav.sql.Date

    incompatible,

    et pour le RefProduit c'est le resultat d'une autre requete ,l'utilisateur n'entre pas la REfProduit

  6. #6
    Expert éminent sénior
    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 : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    il ne l'entre pas, mais il existe peut etre déjà avec un quote dans la db

    pour la convertion de sql.date depuis util.date, il suffit de faire:

    new java.sql.Date(date.getTime())

  7. #7
    Membre régulier
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Points : 88
    Points
    88
    Par défaut
    restez patient Monsieur

    maintenant le SGBD me renvoi aucune erreur ,

    mais je cherche l'origine de l'erreur :

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at TableRapport.<init>(TableRapport.java:54)
    at impression.Rapport(impression.java:281)
    at impression.<init>(impression.java:244)
    at OMAG$MenuPrincipale.actionPerformed(OMAG.java:288)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)



    la conversion de util vers sql me donne 2008-08-17 != 17/08/2008

  8. #8
    Expert éminent sénior
    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 : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at TableRapport.<init>(TableRapport.java:54)
    at impression.Rapport(impression.java:281)
    at impression.<init>(impression.java:244)
    at OMAG$MenuPrincipale.actionPerformed(OMAG.java:288)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    Pour ce qui est de util.Date en sql.Date, inutile de comparer des pommes et des poires, la date sera envoyée sous forme d'un objet sql.Date à la couche sql, t'as pas à te soucier d'une quelconque représentation sous forme de string, le connecteur enverra d'ailleurs probablement un simple nombre de 64bits.

  9. #9
    Membre régulier
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Points : 88
    Points
    88
    Par défaut
    merci beaucoup tchize_ pour votre aide et patience

    je vais chercher l'erreur dans TableRapport et je vais vous repondre demain ,

  10. #10
    Membre régulier
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Points : 88
    Points
    88
    Par défaut
    Bonjour ,

    j'ai corrigé l'erreur java.lang.NullPointerException de TableRapport

    et mon SGBD ne me renvoi aucune erreur, mais il m'afiche pas les données de la date entrée

    sachant que toutes les ResultSet et methodes d'affichage sont bien faites ,et que j'ai le bon résultat

    quand j'utilise le type Text pour la colonne Date et le paramètre date(String) de la requete,

    ça veut dire que la comparaison renvoi un false et par consequantle ReseltSet est vide


    d'autre idées SVP ,mon stage se terminera à la fin de mois

  11. #11
    Expert éminent sénior
    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 : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Par curiosité, le type du champs dans la db, quel est-il? Il existe plusieurs formats de type dates en sql, certains prenant en compte aussi l'heure et d'autre non. Le type java.sql.Date n'inclue pas de notion d'heure

  12. #12
    Membre régulier
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Points : 88
    Points
    88
    Par défaut
    un grand merci pour vous sur cette suivi ,

    j'ai mentionné ça en haut dd/MM/yyyy

    Date, abrégé 19/06/1994

  13. #13
    Expert éminent sénior
    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 : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    non, je demande le type SQL dans la schéma de la db (DATE,LONGDATE,TIMESTAMP), l'affichage, c'est toujours relatif à la langue de l'utilizsateur courant....

  14. #14
    Membre régulier
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Points : 88
    Points
    88
    Par défaut
    j'ai pas bien compris ,

    moi je crée pas ma table par des requetes de creations de la table en specifiant les colonnes et leur types pour specifier le type de la colonne Date(Date,LONGDate..) mais j'ai la crée manuellement en access

  15. #15
    Expert éminent sénior
    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 : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par ouchemhou Voir le message
    j'ai pas bien compris ,

    moi je crée pas ma table par des requetes de creations de la table en specifiant les colonnes et leur types pour specifier le type de la colonne Date(Date,LONGDate..) mais j'ai la crée manuellement en access
    Et on peut voir la requete de création de la table "omag_valeur"?

    Pour In: rien à voir, sa comparaison se fait en sql, pas en java!

  16. #16
    Membre régulier
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Points : 88
    Points
    88
    Par défaut
    mais j'ai la crée manuellement en access
    la table omag_valeur n'est pas crée par une requete sql

  17. #17
    Expert éminent sénior
    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 : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    ben demande à access de t'exporter le schéma ou utilise les commande ad-hoc pour ta base de données (si c'est du mysql, la commande describe)

  18. #18
    Membre régulier
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Points : 88
    Points
    88
    Par défaut
    là je suis bloqué ,je sais pas comment meme aprés un petite recherche

    merci

Discussions similaires

  1. [Dates] problème avec date et mktime
    Par gloubi dans le forum Langage
    Réponses: 2
    Dernier message: 07/02/2007, 17h59
  2. [Dates] Problème avec date (heure qui varie)
    Par Death83 dans le forum Langage
    Réponses: 10
    Dernier message: 05/08/2006, 02h19
  3. Problème avec date dans requête
    Par alain94 dans le forum Access
    Réponses: 2
    Dernier message: 22/05/2006, 07h49
  4. Problème avec "Date()" en mode runtime
    Par bwalbourg dans le forum Runtime
    Réponses: 1
    Dernier message: 25/01/2006, 10h51
  5. [MySQL] Problème avec DATE SUB et INTERVAL
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/01/2006, 00h36

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