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 :

[JDBC] Champ COUNT Incorrect mais Requete Access OK


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 138
    Points : 45
    Points
    45
    Par défaut [JDBC] Champ COUNT Incorrect mais Requete Access OK
    Bonjour,
    voila mon probleme ma requete sous Access fonctionne sans probleme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT numero_formateur
    FROM Dispoform, Disponibilites
    WHERE Dispoform.heure_debut<=Disponibilites.heure_debut And Dispoform.heure_fin>=Disponibilites.heure_fin And numero_stagiaire=17 AND Disponibilites.annee=2006 AND Disponibilites.annee=Dispoform.annee AND Disponibilites.numero_semaine="1" AND Disponibilites.numero_semaine=Dispoform.numero_semaine AND Disponibilites.jour="mercredi" AND Disponibilites.jour=Dispoform.jour;
    Cependant quand je souhaite l'utiliser avec Java et Jdbc j'ai comme erreur champ count incorrect

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
     
    	nb=0;
         	SQL=" SELECT numero_formateur FROM Dispoform, Disponibilites WHERE Dispoform.heure_debut<=Disponibilites.heure_debut And Dispoform.heure_fin>=Disponibilites.heure_fin And numero_stagiaire= ? AND Disponibilites.annee= ?AND Disponibilites.annee=Dispoform.annee AND Disponibilites.numero_semaine= ?AND Disponibilites.numero_semaine=Dispoform.numero_semaine AND Disponibilites.jour= ? AND Disponibilites.jour=Dispoform.jour";
    try 
    			      {
    			      		//On créé le prepareStatement
    			try 
    			    {
    				pStmt=con.prepareStatement(SQL);
    			    }
    			catch(SQLException e)
    			    {
    				System.out.println("exception du a la creation du prepare statement "+e.getMessage());
     
    				JOptionPane.showMessageDialog(null,"Exception due à la création du prepare statement","Erreur! ",JOptionPane.WARNING_MESSAGE );
    			    }
    		    pStmt.setInt(1,new Integer(infoS).intValue());
    			pStmt.setInt(2,new Integer(s_an.getText()).intValue());
    			pStmt.setString(2,c_numSem.getSelectedItem().toString());
    			pStmt.setString(3,"Mercredi");
     
    			 rs=pStmt.executeQuery();	
    			      		while(rs.next()) nb++;
    			      		rs=pStmt.executeQuery();
     
    			   }
    			  catch(SQLException e)
    			    {
                                    sonErreur();
                                    JOptionPane.showMessageDialog(null,e.getMessage(),"Erreur !",JOptionPane.WARNING_MESSAGE );
    				System.out.println("Exception du a l'execution de la requete");
    				System.out.println(SQL);
    				System.out.println(e.getMessage());
    			    }
    			     if(nb==0)
    			      {
     
    				  }
    			  else
    			      {    		
    				try 
    				      {	
    							numsTmp=new String[nb];
    					      rs.next();
     
    							for(int i=0;i<nb;i++)
    							{
    								numsTmp[i]=rs.getString(1);
    								rs.next();
    							}
    					 }
     
     
    				  catch(SQLException e)
    				      {
    					  sonErreur();
    					  JOptionPane.showMessageDialog(null,e.getMessage(),"Erreur !",JOptionPane.WARNING_MESSAGE );
    					  System.out.println("Exception du a l'extraction des données");
    					  System.out.println(e.getMessage());
    				      }
     
    			      }

  2. #2
    in
    in est déconnecté
    Membre expérimenté 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
    Points : 1 718
    Points
    1 718
    Par défaut
    donne nous le stackTrace plutot, ça sera plus utile

    si je puis me permettre , pas très beau ce code
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  3. #3
    Membre averti Avatar de supernova
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 447
    Points : 415
    Points
    415
    Par défaut
    C'est pas mieux de faire un BETWEEN entre deux dates?
    Il est difficile d’attraper un chat noir dans une pièce sombre. Surtout lorsqu'il n’y est pas.

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 138
    Points : 45
    Points
    45
    Par défaut
    ouep pas pznsé sur lecoup mais ca ne résoud pas le probleme!
    Ok ss access mais count erreur en java

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 138
    Points : 45
    Points
    45
    Par défaut
    Slaut,
    C'est quoi le stackTrace et tu fais comment pour l'avoir?
    Ce qui est bizarre c'est que la requête fonctionne sous Access mais pas en Java
    j'ai comme erreur

    [Microsoft][Pilote ODBc Microsoft Access] champ count incorrect

  6. #6
    in
    in est déconnecté
    Membre expérimenté 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
    Points : 1 718
    Points
    1 718
    Par défaut
    le StackTrace c'est ce qu'il y a dans la pile d'exécution ...

    pour l'afficher, c'est dans un catch.

    ->

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
    } catch (Exception e) {
     
          e.printStackTrace();   // affiche la pile d'exec sur la sortie standard
     
    }
    ça te donne quelle méthode et surtout quelle ligne est à l'origine de l'exception.
    Indispensable pour le dvpt Java
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  7. #7
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 138
    Points : 45
    Points
    45
    Par défaut
    ligne 1566 de Cours.java ---> rs=pStmt.executeQuery();
    Images attachées Images attachées  

  8. #8
    Membre habitué
    Inscrit en
    Juillet 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 152
    Points : 173
    Points
    173
    Par défaut
    est ce que ce n'est pas parce qu'il mansue un espace dans ta requete ?

    "... Disponibilites.numero_semaine= ?AND ..."

  9. #9
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 138
    Points : 45
    Points
    45
    Par défaut
    non justement j'ai corrigé car je m'en suis apperçu mais ca change pas le probleme

  10. #10
    in
    in est déconnecté
    Membre expérimenté 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
    Points : 1 718
    Points
    1 718
    Par défaut
    Citation Envoyé par dude
    est ce que ce n'est pas parce qu'il mansue un espace dans ta requete ?
    je crois que tu as mis le doigt dessus

    au fait pour le printStacktrace, toutes les lignes ne sont pas intéressantes. généralement ce sont plutot les premières et les dernières ...

    mais bon je pense que ton pb est résolu ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  11. #11
    Membre habitué
    Inscrit en
    Juillet 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 152
    Points : 173
    Points
    173
    Par défaut
    Citation Envoyé par log2n
    non justement j'ai corrigé car je m'en suis apperçu mais ca change pas le probleme
    tu les as tous corrige ? parce que ca apparait plusieurs fois.

    (d'où l'intêret d'ecrire propremment sur 80 colonnes. tu l'aurais vu plus vite...)

  12. #12
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 138
    Points : 45
    Points
    45
    Par défaut
    non ce n'est pas ca ce n'est pas le espace qui manque je l'ai corrigé et ca ne change rien la preuve
    Images attachées Images attachées  

  13. #13
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 138
    Points : 45
    Points
    45
    Par défaut
    Oui il y en a 4

  14. #14
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par in
    si je puis me permettre , pas très beau ce code
    +1
    • Tu ne fermes pas les flux avec close(). Pour info cela devrait être fait dans des bloc try/finally...
    • Tes multiples try/catch rendent la lecture du code difficile, et en plus ce n'est même pas sécurisé. En effet si une exception se produit à la création de ton Statement, tu rentre bien dans le premier catch mais après tu continueras ton code normalement, ce qui provoquera un NullPointerException... Dans ces cas là il est préférable d'utiliser un seul bloc try/catch qui couvre tous le code, voir carrément de faire remonter l'exception...
    • Tu parcours deux fois le ResultSet et tu exécutes deux fois le Statement. Pour connaitre le nombre de ligne je te conseillerais d'utiliser la méthode de la FAQ (Comment connaître le nombre de lignes/colonnes d'un ResultSet ?). Mais dans ton cas comme tu ne te sers du nombre de ligne que pour créer ton tableau, le mieux serait de passer par un List pour la création de ton tableau (voir même d'utiliser seulement une List).
    • Comme cela a été dit, utilise massivement les e.printStackTrace() pour le débbugage...
    Ce qui pourrais donner :
    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
            SQL = " SELECT numero_formateur FROM Dispoform, Disponibilites WHERE Dispoform.heure_debut<=Disponibilites.heure_debut And Dispoform.heure_fin>=Disponibilites.heure_fin And numero_stagiaire= ? AND Disponibilites.annee= ? AND Disponibilites.annee=Dispoform.annee AND Disponibilites.numero_semaine= ? AND Disponibilites.numero_semaine=Dispoform.numero_semaine AND Disponibilites.jour= ? AND Disponibilites.jour=Dispoform.jour";
     
            try {
                PreparedStatement pStmt = con.prepareStatement(SQL);
                try {
                    pStmt.setInt(1, new Integer(infoS).intValue());
                    pStmt.setInt(2, new Integer(s_an.getText()).intValue());
                    pStmt.setString(2, c_numSem.getSelectedItem().toString());
                    pStmt.setString(3, "Mercredi");
     
                    ResultSet rs = pStmt.executeQuery();
                    try {
                        List resultats = new ArrayList();
                        while (rs.next()) {
                            resultats.add( rs.getString(1) );
                        }
                        numsTmp = (String[]) resultats.toArray(new String[resultats.size()]);
                    } finally {
                        rs.close();
                    }
                } finally {
                    pStmt.close();
                }
            } catch (SQLException e) {
                sonErreur();
                JOptionPane.showMessageDialog(null, e.getMessage(), "Erreur !",
                        JOptionPane.WARNING_MESSAGE);
                System.out.println("Exception du a l'execution de la requete");
                System.out.println(SQL);
                System.out.println(e.getMessage());
                e.printStackTrace();
            }
    Sinon le seul problème que je vois dans ta requête viens du fait qu'il y a un point d'intérrogation "collé" au mot clef AND : ?AND...

    [edit] bon grillé et apparemment cela ne vient pas de là : on pourrait avoir le stacktrace complet ???

    a++

  15. #15
    Membre habitué
    Inscrit en
    Juillet 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 152
    Points : 173
    Points
    173
    Par défaut
    apres il y a ca aussi....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    pStmt.setInt(1,new Integer(infoS).intValue());
    pStmt.setInt(2,new Integer(s_an.getText()).intValue());
    pStmt.setString(2,c_numSem.getSelectedItem().toString());
    pStmt.setString(3,"Mercredi");

  16. #16
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par dude
    apres il y a ca aussi....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    pStmt.setInt(1,new Integer(infoS).intValue());
    pStmt.setInt(2,new Integer(s_an.getText()).intValue());
    pStmt.setString(2,c_numSem.getSelectedItem().toString());
    pStmt.setString(3,"Mercredi");
    Bien vu

  17. #17
    Membre habitué
    Inscrit en
    Juillet 2004
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 152
    Points : 173
    Points
    173
    Par défaut
    comme quoi... le probleme etait isolé depuis le début :
    Citation Envoyé par in
    si je puis me permettre , pas très beau ce code
    plus facile d'analyser 10 lignes que 50...

  18. #18
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 138
    Points : 45
    Points
    45
    Par défaut
    Merci à tous
    Ben merci aussi pour les conseils
    En fait c'est un projet immense on devait être deux à l'orignine (4 mois ) mais je me suis retrouvé tout seul avec aucun informaticien dans la boite et beaucoup de problemes du fait que je ne pouvais pas avoir les infos que je voulais en temps et en heure donc perte de temps énorme.

    donc a force de taper du code du code ... ben meme les trucs idiots on ne s'en rends plus compte

    NB les flux sont fermés aprs j'ai pas mis tout le code

Discussions similaires

  1. [AC-2003] Problème Requete ACCESS avec un champ memo
    Par pio_killer dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 14/10/2009, 08h52
  2. Pb Count dans une requete avec plusieurs champ retournés
    Par maxos75 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 13/06/2008, 14h01
  3. [Access 2000] un champ issu d'une requête ?
    Par Manopower dans le forum Langage SQL
    Réponses: 10
    Dernier message: 21/09/2006, 19h31
  4. [Access] Probleme de count dans une requete sql
    Par castelligreg dans le forum Langage SQL
    Réponses: 6
    Dernier message: 14/04/2006, 16h20
  5. [sql]Probleme de count dans une requete sql (sous access)
    Par castelligreg dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 14/04/2006, 16h06

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