Erreur null dans un code java

Résolu
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);
}
}

13 réponses

  1. Contributeur
    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
    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
      1. Contributeur
        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
        1. merci bien

          j l'ai ajouté mais même erreur nnoomm=null
          0
          1. Contributeur
            C'est possible d'avoir l'erreur en entier, et les autres choses demandées ?
            0
            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
              1. Contributeur
                Tu es sûr qu'il y a des choses dans la BDD?
                0
                1. oui , :)
                  c'est bizarre non?
                  0
                  1. autre idée SVP?
                    0
                    1. Contributeur
                      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
                      1. vraiment vous avez tous fait
                        merci pour votre effort
                        la même erreur persiste
                        :'(
                        0
                        1. Contributeur
                          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
                          1. enfin , résolu!
                            j'ai changé le type de projet de EJB en Web

                            ça marche bien ;)

                            merci
                            0