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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    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 954
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 954
    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 confirmé
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    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
    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
    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 confirmé
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    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
    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
    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 confirmé
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    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

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