Quand j'éxécute mon code la condition If ne s'exécute pas comme je le voudrais.
Dans mon entendement, cette partie de la condition IF (getNomcli(str)==null){ Vente vent = new Vente(str);}
devrait s'exécute quand la méthode getNomcli(str)renvoie un null. Mais à mon grand désarois rien ne se passe par contre la partie ELSE{....} s'exécute correctement.
Alors je voudrais comprendre où aurait-je pu faire une erreur. ou comment cela fonctionne correctement. Je rappelle que je suis entrain d’écrire un programme de gestion de stock de matériel informatiques qui en faite est mon projet de fin de cycle d'ingénieur.
Aussi je suis débutant en Java.
Merci de votre aide....
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 4 févr. 2011 à 14:33
Salut,
Il faudrait que tu nous montre le code de ta fonction getNomcli afin de voir dans quel cas elle te renvoie null.
______________________________________
AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
cs_redbar
Messages postés112Date d'inscriptionmardi 26 janvier 2010StatutMembreDernière intervention26 mai 2014 4 févr. 2011 à 15:37
LA méthode getNomcli(String string), je l'ai écrite pour quelle me renvoie le nom du client de la Base de données Quand le paramètre entré est égal au nom existant dans la BD à l'aide de la requête SELECT dans la méthode. Par contre elle renvoie null quand le paramètre entré n'est pas égal à un nom de la base de données en fait quand la recherche est infructueuse.
/**
* methode permettant de recuperer le nom du client de la base de Données
* @param ncli
* @return
*/
public String getNomcli(String ncli){
String nomclient = null;
requete "SELECT nomcli FROM client WHERE nomcli"+"'"+ncli+"'";
try{
Statement state = Maconnexion.getInstance().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet res = state.executeQuery(requete);
res.next();
nomclient = res.getString("nomcli");
res.next();
}catch (SQLException er){
//er.printStackTrace();
System.out.println("vous avez un resultat null");
}
System.out.println("Voici le resultat "+nomclient);
return nomclient;
}
Ce que tu dis est invraisemblable. Si getNomcli renvoie null, la partie juste après le if est exécutée. Je ne comprends pas pourquoi tu appelles 2 fois getNomcli et surtout pourquoi tu appelles 2 fois next() dans la méthode getNomcli.
cs_redbar
Messages postés112Date d'inscriptionmardi 26 janvier 2010StatutMembreDernière intervention26 mai 2014 7 févr. 2011 à 12:47
Bonjour
Ok je reconnais que j'ai un peu forcer sur l'appel de la méthode getNomcli(), mais c’était pour m'assurer que j'ai la même chose dans ma variable . j'ai corriger cela.
En fait, je veux exécuter les deux partie de la condition si la méthode getNomcli() renvoie une valeur trouver il y a une action que je voudrais réalise avec le résultat.c'est à dire exécuter ça : Vente vent = new Vente(sNom,sTel,sAdr);
Mais également si c'est la valeur est null aussi ce que j'ai récupérer dans ma variable doit me permettre de faire un autre traitement.
c'est-à-dire exécuter ça: Vente vent = new Vente(str);
DAns la méthode getNomcli() je vais revoir l'appel de next
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_redbar
Messages postés112Date d'inscriptionmardi 26 janvier 2010StatutMembreDernière intervention26 mai 2014 7 févr. 2011 à 13:26
Bonjour
Après plusieurs recherche j'ai finalement trouver. Et ça marche bien.
En fait lorsque je lance l'exécution de la condition if(){ } Else{ }:
c'est une partie qui s'exécute
Mais après avoir décortiquer le code plus en profondeur. je me suis rendu compte que à cause du null que renvoie la méthode getNomcli(), il y a une exception qui est lévée. Dans la gestion de cette exception j'ai mis dans le bloc catch ( ){ } cette instruction Vente vent = new Vente(str).
et ça marche maintenant