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 :

Selection des valeurs NULL


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Points : 45
    Points
    45
    Par défaut Selection des valeurs NULL
    Bonjour à tous !

    Je développe une application Java sous Eclipse, et j'ai un petit soucis dans une de mes requêtes...

    Je voudrais sélectionner tous les champs d'une table, y compris les valeures qui sont nulles... est-ce possible et si oui comment ?

    Voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    R = (ResultSet) St.executeQuery("SELECT Heure_arrivée,Heure_départ,Temps_pause FROM plannifier WHERE Num_service=" + num_service + " AND Num_Emp=" + Tab[k] + ";");
    Merci à tous !

  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
    Ben oui c'est possible, je vois pas trop où est le problème

    si dans une table tu as la ligne :

    1,null,null,null

    un select * te renverra bien cette ligne.

    Quel est exactement le problème ? Tu as une erreur ?

    PS : enlève le ";" de ta requete, ça marchera surement mieux ...

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Points : 45
    Points
    45
    Par défaut
    Alors, le truc c'est que je ne fait pas un select *

    Je me suis mal exprimé, ce n'est pas tous les champs de la table, mais seulement certains (3 dans ce cas)

    PS: le ";" ne change rien, je viens de tester... et je l'ai toujours mis dans toutes mes autres requêtes

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    euh, j'ai rien compris... Tu peux dire clairement ce que tu veux faire...

    Tu veux :

    1) sélectionner toutes les colonnes d'une table (y compris celle qui sont NULL)

    select * from table


    2) sélectionner des enregistrements avec dans la condition des valeurs de champs et NULL

    select col1, col2 from table where (colx=val1 or colx is null)


    3) C'est dans le traitement du résultat que tu ne sais pas traiter les valeurs NULL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    while ( rs.next() )
    {
       // C'est un exemple avec un String, ça peut évidement être autre chose
       String col1 = rs.getString(1);
       if ( col1 == null ) doSomething();
       else doSomethingElse();
    }

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Points : 45
    Points
    45
    Par défaut
    En fait, quand j'affiche les résultats de ma requête, là où il devrait y avoir des valeurs nulles, il ne me les affiche pas...

    Je fais un traitement à la suite mais je veux le faire pour TOUTES les valeurs, même les NULL... car admettons, j'ai dans ma table 7 valeurs dont 2 nulles...
    J'ai une méthode ensuite qui fait un calcul sur 7 valeurs, et si c'est null, il n'en tient pas compte. Mais si je n'ai que 5 valeurs à passer à la méthode, cela ne fonctionne pas

    Je ne suis pas très clair mais j'éspère que vous me comprenez

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Peux-tu montrer le code (ou une partie), je pense qu'on comprendra mieux

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Points : 45
    Points
    45
    Par défaut
    Je veux juste que lorsque je fais un JOptionPane.showmessageDialog de ma requete, il m'affiche les valeurs, et quand il tombe sur une valeur nulle, il l'affiche aussi, ce qui n'est pas le cas en ce moment !!! Dès qu'il trouve une valeur nulle, rien n'est mis dans le JOptionPane.showmessageDialog, a part la valeur suivante.
    Donc tout est dans le désordre, ce qui est impossible à traiter pour ma méthode de calcul après... c'est pour cela que je ne peux malheureusement pas traiter les Null à part...


    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
     
    while(k<nbr_emp)
    {
    	JOptionPane.showMessageDialog(null, String.valueOf(Tab[k]));
    	R = (ResultSet) St.executeQuery("SELECT Heure_arrivée,Heure_départ,Temps_pause FROM plannifier WHERE Num_service=" + num_service + " AND Num_Emp=" + Tab[k] + ";");
    	Planning.calcul_heures ch = new Planning.calcul_heures();
    	String[] TabResult = new String[7];
    	int i = 0;
    	while(R.next())
    	{
    		arrive = R.getString(1);
    		depart = R.getString(2);
    		pause = R.getString(3);
    		TabResult[i] = ch.Recup_Infos(arrive, depart, pause);
    		JOptionPane.showMessageDialog(null, TabResult[i]);
    		i++;
    	}
    	Total = ch.Total_heures(TabResult[0], TabResult[1], TabResult[2], TabResult[3], TabResult[4], TabResult[5], TabResult[6]);
    	JOptionPane.showMessageDialog(null, Total);
    	//edt_impr ep = new edt_impr();
     
    	//ep.lb_l1.setText(TabResult[0]);
    	// Fin - Récupération des horaires par jour pour l'employé en cours
    	k++;
    }

  8. #8
    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
    Bon ce que tu peux essayer (mais bon je garantis pas) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    arrive = String.valueOf(R.getString(1));
    depart = String.valueOf(R.getString(2));
    pause = String.valueOf(R.getString(3));
    mais bon là je sais pas si ça va pas t'afficher "null" à la place d'une chaine vide

    Sinon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    arrive = (R.getString(1) == null) ? "" : R.getString(1);
    depart = (R.getString(2) == null) ? "" : R.getString(2);
    pause = (R.getString(3) == null) ? "" : R.getString(3);
    enfin bref, tester si c'est null et si oui ben tu mets une chaine vide. Tu peux faire ce test de la manière que tu préfères bien sûr. (avec le wasNull de la classe resultSet par exemple c'est peut être mieux ?)

    enfin juste une petite remarque sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TabResult
    St
    R = (ResultSet)
    Si tu as bien déclaré R comme Resultset tu n'as pas besoin de faire le cast
    De plus, en java (par convention) on utilise pas de majuscule pour le nommage de variables (en première lettre), c'est réservé aux classes ...

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Points : 45
    Points
    45
    Par défaut
    Merci de m'avoir répondu mais après avoir testé tes deux solutions, j'ai le même résultat

    Je vais regarder pour le wasNull...

    edit : je suis obligé de laisser le cast car ce n'est pas un resultset du package Java.SQL mais un du package com.jdbc..... pour la liaison MySQL qui marche bien

  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
    juste pour info,

    si tu fais un System.out.println de tes valeurs, il affiche null ou une chaine vide ?

    a mon avis le problème ne vient pas de la lecture des resultats mais plutot de la méthode Recup_Infos. Tu peux nous la montrer ?

  11. #11
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Points : 45
    Points
    45
    Par défaut
    Je suis en effet en train de corriger ma méthode Récup_Infos... et même Total_heures...

    Merci à vous, je reviens si j'ai un problème ou si je n'y arrive vraiment pas

Discussions similaires

  1. Pas de retour des valeurs NULL
    Par titmael dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/12/2007, 14h41
  2. compter des valeurs null
    Par Lady dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/09/2007, 12h22
  3. Pas d'affichage des valeurs nulles avec un COUNT
    Par phoenixz22 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 30/05/2007, 18h39
  4. [SQL] Affichage des valeurs nulles dans un Count
    Par at_first dans le forum Access
    Réponses: 4
    Dernier message: 06/03/2007, 11h07
  5. NOT NULL enregistre des valeurs null
    Par tyberium dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/12/2006, 09h20

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