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

Servlets/JSP Java Discussion :

[jsp, rmi, sql]executeQuery qui ne rend rien


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 60
    Points : 44
    Points
    44
    Par défaut [jsp, rmi, sql]executeQuery qui ne rend rien
    Bonjour,

    dans le cadre d'un développement web en java/jsp, j'essaie de gérer la connection d'utilisateur, leur inscription, ... le tout en passant par un serveur rmi

    lors de l'inscription, je vérifie le mail inscrit via la fonction suivante

    seulement, celle-ci me renvoie à chaque fois null, quand bien même je mets une adresse mail valide contenue dans la bdd ...

    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
     
    public String connect(String mail)
    {
    	DBConnection dbc = new DBConnection();
    	String name = new String();
     
    	try{
    		Statement st = dbc.connexion.createStatement();
    		ResultSet rs;
     
    		rs = st.executeQuery("select name from user where mail='" + mail + "'");
     
    		if(rs.getRow() == 0){
    			rs.close();			
    			st.close();
    			return null;		
    		}
    		name = rs.getString("name");
    		rs.close();			
    		st.close();
    	}
    	catch(SQLException sqle){
    		System.out.println("Exception Connect User SQL");
    		sqle.printStackTrace();
    	}
    	finally{
    		dbc.FermerConnection();
    	}
     
    	return name;
    }
    si quelqu'un peut m'aider sur ce point là, je ne vois pas du tout pourquoi il me renvoie null

    le main suivant est appelé en java (et non dans une appli jsp, ceci afin de tester d'abord sans le faire sur le web)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    try {											    
     
    					    Registry reg = LocateRegistry.getRegistry(53001);
     
    						DatabaseServerInterface dbsI = (DatabaseServerInterface) reg.lookup("dbS");
     
    String test = dbsI.connexion(mail);
    						System.out.println(test);
    					} 
    					catch (Exception e) {
    					    System.err.println("Uset Connexion exception: ");
    					    e.printStackTrace();
    					}
    quoi qu'il arrive, test renvoie null, et pire, si je mets dans ma fonction "unString" en lieu et place de name et null dans les return, il m'affiche tout de même null

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 60
    Points : 44
    Points
    44
    Par défaut
    je mets ici le code complet en espérant que quelqu'un saura m'aider

    la classe de connexion
    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
    package com.foot.database;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
     
    public class DBConnection {
     
    	public Connection connexion = null;
     
    	public DBConnection(){
     
    		try{
    			Class.forName("com.mysql.jdbc.Driver").newInstance();
    			try{
    			connexion = DriverManager.getConnection("jdbc:mysql://localhost:3306/foot", "root", "");
    			}
    			catch(SQLException sqle)
    			{
    				System.out.println("Exception SQL : ");
    				   while (sqle != null) {
    				      String message = sqle.getMessage();
    				      String sqlState = sqle.getSQLState();
    				      int errorCode = sqle.getErrorCode();
    				      System.out.println("Message = "+message);
    				      System.out.println("SQLState = "+sqlState);
    				      System.out.println("ErrorCode = "+errorCode);
    				      sqle.printStackTrace();
    				      sqle = sqle.getNextException();
    				   }
    			}
    		}
    		catch(Exception e)
    		{
    			System.out.println("!! Erreur Connection!!");
    		}
    	}
     
    	public void FermerConnection(){
    		try{
    			connexion.close();
    		}
    		catch(Exception e)
    		{
    			System.out.println("!! Erreur Fermeture !!");
    		}
    	}
    }
    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
    package com.foot.database;
     
    import java.rmi.registry.LocateRegistry;
    import java.rmi.registry.Registry;
    import java.rmi.server.UnicastRemoteObject;
     
    public class DatabaseServer {	
     
    	public static void main(String[] args){
     
     
    		try{
    			Registry registry = LocateRegistry.createRegistry(53001);
    			registry = LocateRegistry.getRegistry(53001);
     
    			DatabaseImpl dbSI = new DatabaseImpl();
    			DatabaseServerInterface stub = (DatabaseServerInterface) UnicastRemoteObject.exportObject(dbSI, 0);
     
     
    			registry.rebind("dbS", stub);
    			System.out.println("Serveur pret");
    		}
    		catch(Exception e){
    			System.out.println("Rebind Server erreur " + e.toString());
    			e.printStackTrace();
    		}
     
     
     
    	}
    }
    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
    package com.foot.database;
     
    import java.rmi.*;
    import java.util.*;
     
    public class DatabaseImpl implements DatabaseServerInterface{
    	public DatabaseImpl() throws RemoteException {
    		super();
    	}
     
    	public ArrayList<String> ListedesMembres() throws RemoteException{
    		DBQuery dbqe = new DBQuery();
    		return dbqe.ListedesMembres();
    	}
     
    	public ArrayList<Object> selectClient(String nomPrenom) throws RemoteException{
    		DBQuery dbqe = new DBQuery();
    		ArrayList<Object> dClient = new ArrayList<Object>();
    		dClient = dbqe.selectClient(nomPrenom);
    		return dClient;
    	}
     
    }
    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
    package com.foot.database;
     
     
    import java.rmi.registry.*;
    import java.util.*;
     
     
    public class MembreClient {	
     
    		public static void main(String [] args) {
    			System.out.println("demarrage client");
    			//boolean flag = false;
    					try {											    
     
    					    Registry reg = LocateRegistry.getRegistry(53001);
     
    						DatabaseServerInterface dbsI = (DatabaseServerInterface) reg.lookup("dbS");
     
    					    /*
    					    ArrayList<String> liste = dbsI.ListedesMembres();
    					    for(int i = 0; i < liste.size(); i++)
    					    	System.out.println(liste.get(i).toString());					    
    					    */
     
     
    						String nom = "nomMembre";
    						ArrayList<Object> l = new ArrayList<Object>();
    						l = dbsI.selectClient(nom);
    						System.out.println(l.get(0).toString());
     
     
    					} 
    					catch (Exception e) {
    					    System.err.println("Client exception: ");
    					    e.printStackTrace();
    					}
    					//System.out.println(flag);
    		}
     
     
     
     
     
    }
    dans le dernier code, la partie en commentaire dans le try fonctionne sans soucis, je récupère la liste, mais ce qui est décommenté, il me rend un javanullpointer exception ... je ne vois pas du tout pourquoi

    tout est initialisé, les requêtes fonctionne lorsque je le fais sous phpmyadmin

    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    package com.foot.database;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.*;
     
     
     
    public class DBQuery extends DBConnection {
     
    public ArrayList<String> ListedesMembres(){
    	DBConnection dbc = new DBConnection();
    	ArrayList<String> membres= new ArrayList<String>();
     
    	try{
    		Statement st = dbc.connexion.createStatement();
    		ResultSet rs;
     
    		rs = st.executeQuery("select * from t_membres");
     
    		while(rs.next()){
    				membres.add(rs.getString("name"));
    				//System.out.println(rs.getString("name"));
     
    		}
     
    		rs.close();			
    		st.close();
    	}
    	catch(SQLException sqle){
    		System.out.println("Exception Select membres SQL");
    		sqle.printStackTrace();
    	}
    	finally{
    		dbc.FermerConnection();
    	}
    	return membres;
     
    }
     
    public ArrayList<Object> selectClient(String nomPrenom)
    {
    	DBConnection dbc = new DBConnection();
    	ArrayList<Object> dClient = new ArrayList<Object>();
    	try{
    		Statement st = dbc.connexion.createStatement();
    		ResultSet rs;
     
    		rs = st.executeQuery("select * from t_clients");
    		// where name = '" + nomPrenom + "';
    		if(rs.getRow() == 0){
    			rs.close();			
    			st.close();
    			return null;		
    		}
    		dClient.add(rs.getString("name"));
    		dClient.add(rs.getString("address"));
    		//dClient.add(rs.getInt("cp"));
    		dClient.add(rs.getString("town"));
    		dClient.add(rs.getString("phone"));
    		dClient.add(rs.getString("mail"));
     
    		rs.close();			
    		st.close();
    	}
    	catch(SQLException sqle){
    		System.out.println("Exception Connect User SQL");
    		sqle.printStackTrace();
    	}
    	finally{
    		dbc.FermerConnection();
    	}
     
    	return dClient;
    }
    }
    merci à ceux qui pourront m'aider

    Client exception:
    java.lang.NullPointerException
    at com..foot.database;
    .database.MembreClient .main(MembreClient .java:44)
    la ligne 44 étant : System.out.println(l.get(0).toString());

    comme je l'ai dit plus haut, cette classe MembreClient me sert pour les tests avant de mettre en oeuvre en jsp

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    Hello !

    Essaies ça plutôt :

    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
    String name = null;
     
    Statement st = null;
    ResultSet rs = null;
    try{
        st = dbc.connexion.createStatement();
        rs = st.executeQuery("select name from user where mail='" + mail + "'");
        if(rs.next()) name = rs.getString("name");
    }
    catch(SQLException sqle){
        System.out.println("Exception Connect User SQL");
        sqle.printStackTrace();
    }
    finally
    {
        if (rs != null) try {rs.close();} catch (SQLException sqle) {}
        if (st != null) try {st.close();} catch (SQLException sqle) {
        dbc.FermerConnection();
    }
    return name;

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 60
    Points : 44
    Points
    44
    Par défaut
    merci bien !

    mis en fait je viens de corriger, vis à vis de mon code, j'avais juste à remplacer le test (if rs.getRow(), if rs.first() ... et ça fonctionne :/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requete SQL qui ne retourne rien alors que ma table n est pas vide
    Par adelsunwind dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/06/2009, 19h16
  2. [SQL-Server] Requête qui ne renvoie rien PHP5 et SQL SERVER 2000
    Par Sytchev3 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/05/2009, 09h46
  3. [ODBC] Requète SQL qui ne retourne rien
    Par WebManiaK dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/01/2009, 14h33
  4. [SQL Server] Fonction qui ne renvoit rien !
    Par Godia dans le forum Langage SQL
    Réponses: 1
    Dernier message: 02/07/2008, 11h32
  5. Requete sql qui ne renvoie rien :-(
    Par patchouli dans le forum Langage SQL
    Réponses: 4
    Dernier message: 06/02/2007, 09h41

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