Erreur null dans un code java

Résolu
futur ingenieure Messages postés 185 Statut Membre -  
futur ingenieure Messages postés 185 Statut Membre -
salut ,

SVP j'ai réaliser le code suivant d'un web service d'identification
je ne sais pas pourquoi la variable nnoomm est toujours null

aidez moi svp c'est urgent



import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.ejb.Stateless;


@WebService()
@Stateless()
public class IdentificationWebService {

/**
* Web service operation
*/
@WebMethod(operationName = "IdentificationOp")
public String IdentificationOp(@WebParam(name = "login")
String login, @WebParam(name = "pass")
String pass) {
//TODO write your implementation code here:
String nnoomm = null;
try {
String username = "root";
String password = "0000";
Statement stmt;
ResultSet rs;

Class.forName("com.mysql.jdbc.Driver").newInstance();


String url = new String("jdbc:mysql://localhost:3306/iptv");
Connection conn = DriverManager.getConnection(url, username, password);
System.out.println("OK connexion réussie...");


stmt = conn.createStatement();
rs = stmt.executeQuery("select * from clients");



while (rs.next())
{
String l1 = rs.getString("login");
String m1 = rs.getString("password");
if ((l1.equals(login))&& (m1.equals(pass)))
{ String nom = rs.getString("nom");
System.out.println(nom + "\n");
nnoomm=nom;

}
/*else { JOptionPane.showMessageDialog(null, "Valeur incorrecte de nom d'utilisateur ou/et de mot de passe. " , "Erreur",
JOptionPane.ERROR_MESSAGE);
}*/

}
nnoomm=rs.getString("nom");

// rs.close();
// stmt.close();
// conn.close();
// System.out.println("Déconnexion réussie...");

} catch (SQLException ex) {

} catch (InstantiationException ex) {

} catch (IllegalAccessException ex) {

} catch (ClassNotFoundException ex) {

}
return (nnoomm);
}
}





A voir également:

13 réponses

arth Messages postés 10414 Statut Contributeur 1 293
 
while (rs.next())
{
String l1 = rs.getString("login");
String m1 = rs.getString("password");
if ((l1.equals(login))&& (m1.equals(pass)))
{ String nom = rs.getString("nom");
System.out.println(nom + "\n");
nnoomm=nom;

}
/*else { JOptionPane.showMessageDialog(null, "Valeur incorrecte de nom d'utilisateur ou/et de mot de passe. " , "Erreur",
JOptionPane.ERROR_MESSAGE);
}*/

}
nnoomm=rs.getString("nom");

Regarde bien ce qui est souligné : Juste avant, tu parcours les données, et si login ok, alors nnoomm = nom;

Sauf que ce que j'ai souligné, c'est ce qui vient après le While, sauf que rs.next() est déjà passé juste avant dans le while, donc tu es hors zone de données, donc lorsque tu fais nnoomm = rs.getString();, comme le rs est déjà hors champ, il est donc null, donc impossible de faire null.getString(); Ou alors rs.getSTring() retourne NULL.

Enlève cette ligne, et ça devrait être bon.


Le loup, solitaire et mystérieux.
0
futur ingenieure Messages postés 185 Statut Membre 1
 
Merci bien de m'avoir répondre

j'ai enlevé cette ligne vous avez raison

mais la valeur de nnoomm reste encore null dans le soap response

d'aute idée?
0
arth Messages postés 10414 Statut Contributeur 1 293
 
Sans avoir tous les éléments, pas possible.

Que donne comme résultat la reuqête select * from clients?

Juste après le While, rajouter la ligne : System.out.println("Valeur de nnoomm : "+nnoomm);


Le loup, solitaire et mystérieux.
0
futur ingenieure Messages postés 185 Statut Membre 1
 
merci bien

j l'ai ajouté mais même erreur nnoomm=null
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
arth Messages postés 10414 Statut Contributeur 1 293
 
C'est possible d'avoir l'erreur en entier, et les autres choses demandées ?
0
futur ingenieure Messages postés 185 Statut Membre 1
 
il s'agit d'un web service
il m'affiche dans le navigateur , Method returned
java.lang.String : "null"
et bien évidament dans la zone body de soap response rien
0
arth Messages postés 10414 Statut Contributeur 1 293
 
Tu es sûr qu'il y a des choses dans la BDD?
0
futur ingenieure Messages postés 185 Statut Membre 1
 
oui , :)
c'est bizarre non?
0
futur ingenieure Messages postés 185 Statut Membre 1
 
autre idée SVP?
0
arth Messages postés 10414 Statut Contributeur 1 293
 
Remplace le bout de code correpondant par le code suivant :

String l1 = rs.getString("login");
System.out.println("Login récupéré : "+l1);
String m1 = rs.getString("password");
System.out.println("Password récupéré : "+m1);

if ((l1.equals(login))&& (m1.equals(pass)))
{
String nom = rs.getString("nom");
System.out.println("Correspondance trouvée.");
nnoomm=nom;
}

Ca te permettra de vérifier quelles données sont extraites et vérifier par rapport au login si tu retouves les même choses.

Et rajoutes aussi des Print en début de constructeur pour vérifier que les paramètres passés ne sont pas vides.
0
futur ingenieure Messages postés 185 Statut Membre 1
 
vraiment vous avez tous fait
merci pour votre effort
la même erreur persiste
:'(
0
arth Messages postés 10414 Statut Contributeur 1 293
 
Ceci dit, tu ne donne pas ni l'erreur réelle, ni le résultat de l'output, rien.

C'est possible d'avoir les logs des System.out.println? ainsi que la valeur des paramètres en entrée de la fonction?

Les lignes que j'ai rajouté ne serve pas à enlever l'erreur, c'est juste pour comprendre où ça merde pour l'instant.
0
futur ingenieure Messages postés 185 Statut Membre 1
 
enfin , résolu!
j'ai changé le type de projet de EJB en Web

ça marche bien ;)

merci
0