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 filtrage par date


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 138
    Par défaut problème filtrage par date
    Bonjour

    J'ai un problème avec le filtrage selon les dates, en fait je veux filtrer la table femelle selon leurs dates de naissance en utilisant 2 dates quelconques (dans le code qui suit j'ai utilisé 2 date constantes juste pour vérifier si ca marche), j'ai établi ma connexion, les bloques try et catch sont bien placés tout est bon mon problème c'est dans cette partie du code:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     //String req="select * from femelle where Date_naiss BETWEEN #06/01/2007# AND #06/01/2008#";
    String req="select * from femelle where Date_naiss >= #06/01/2007# AND Date_naiss<=#06/01/2008#";
    rs=stmt.executeQuery(req);
     
    while(rs.next()){
               System.out.print("id = "+rs.getLong(1)+"\t ");
               System.out.println("date naissance = "+rs.getDate(3)+"\t ");
                       }
    comme vous pouvez le voir j'ai essayé dans mon code de filtrer en utilisant 2 requêtes différentes qui donnent normalement le même résultat, le resultat obtenu est bien entendu le même pour chacune des 2 requêtes, mais le problème c'est que j'ai constaté que le résultat ne respecte pas les conditions dans la requête, y'en a un filtrage certe, mais pas le filtrage prévu!!

    Voilà là je suis vraiment bloqué, et je serai vraiment reconnaissant si on m'aide à résoudre mon problème?

    merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 138
    Par défaut
    j'ai oublié de préciser que ma base de données est établie avec access 2007.

    et si c'est jamais c'est util à noter, j'uilise eclipse pour developper en java.

  3. #3
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Ben on ne peut pas trop t'aider là ... en tous cas c'est sûrement un problème d'origine SQL, pas de Java ...

    Tu devrais faire ta requête dans Access et une fois que tu as la bonne, tu la mets dans ton prog java ...

  4. #4
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 138
    Par défaut
    Bonjour ben

    merci bien pour ton intervention.

    Je viens d'écrire la requête sous access et ca donne toujours le même résultat ce qui confirme ce que vous avez dis, je vais donc poster mon problème dans le forum d'Access.

    D'autre part j'ai une autre question à propos de la connexion avec la base de données.

    En fait dans mon programme java, à chaque fois que je veux communiquer avec la base de données je procède ainsi:
    j'appel une fonction connect() dont le code est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public void connect(){
    	try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        }catch(ClassNotFoundException e)
        {System.out.println("impossible de charger le drivers");}
        try {
     	   final String url="jdbc:odbc:givalait";
                con=DriverManager.getConnection(url,"","");
        }catch(SQLException e)
        {System.out.println("impossible de crèer une connexion");}
    }
    après je crée ma requete et je l'éxecute, ensuite je fait appel à une fonction disconnect() dont le code est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void disconnect(){
    	try   {
            stmt.close();
            con.close();
            rs.close();
    	} catch(SQLException e){}
    }
    ma méthode est-elle correcte??

  5. #5
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Oui c'est correct. A part que tu n'affiches pas le message de l'exception, ou que tu les ignore carrément (disconnect)

    Par contre, si ton programme fait de nombreuses requêtes, ça va devenir pénalisant d'ouvrir/fermer la connexion à chaque fois.

    Le mieux serait d'ouvrir ta connexion une fois au début et de la fermer à la fin. après à chaque ResultSet que tu utilises, tu le fermes dès que tu n'en a plus besoin ...

    Il faut t'assurer qu'à la fin de ton programme la connexion à la base est bien close. Typiquement c'est dans un bloc finally que tu devrais appeler disconnect

  6. #6
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 138
    Par défaut
    Oui c'est correct. A part que tu n'affiches pas le message de l'exception, ou que tu les ignore carrément (disconnect)
    je prendrai en compte cette remarque

    Par contre, si ton programme fait de nombreuses requêtes, ça va devenir pénalisant d'ouvrir/fermer la connexion à chaque fois.
    En fait c'est exactement pour cette raison que j'ai posé ma question, effectivement mon programme a besoin de beaucoup de requêtes, et je le sens un peu lent, même si ma base est encore quasiment vide ...

    Donc si j'ai bien compris vos recommandations, dès que mon application se lance (j'utilise une interface graphique) j'appelerai la fonction connect() uniquement pour la première requête, une fois chaque requête effectuée, j'illimine l'instruction "con.close()", et je fait les 2 instructions stmt.close() et rs.close().

    l'instruction con.close() ne sera exécuté que lorsque la JFrame est fermé.

    J'attends votre confirmation, et merci beaucoup pour votre aide qui m'est très précieuse.

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

Discussions similaires

  1. problème filtrage par date
    Par master_och dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 07/04/2009, 13h55
  2. Requete : Problème de filtrage par date
    Par flamby6969 dans le forum Access
    Réponses: 1
    Dernier message: 20/12/2007, 13h29
  3. Filtrage par date
    Par zastas dans le forum Bases de données
    Réponses: 6
    Dernier message: 09/04/2006, 16h54
  4. faire un filtrage par date sur base de donnee "delphi
    Par medsoft dans le forum Bases de données
    Réponses: 7
    Dernier message: 04/02/2006, 17h03
  5. Problème classement par date
    Par Triomen dans le forum Langage SQL
    Réponses: 12
    Dernier message: 06/09/2005, 14h09

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