svp quand j'execute mon formulaire de connexion d'un utilisateur et je saisie un user déja inscrit il me génere l'erreur suivante:
org.postgresql.util.PSQLException: Le nom de colonne password n'a pas été trouvé dans ce ResultSet. qcq sa veut dire?
svp quand j'execute mon formulaire de connexion d'un utilisateur et je saisie un user déja inscrit il me génere l'erreur suivante:
org.postgresql.util.PSQLException: Le nom de colonne password n'a pas été trouvé dans ce ResultSet. qcq sa veut dire?
Ca veux dire que tu a exécuté une requête sql ne retournant pas de colonne password, mais tu as quand même demandé au driver de la lire, ce qui est impossible.
Merci Mr tchize_ pour votre réponse;j'ai po sue la corrigée
voiçi mon code:
********La classe UtilisateurDaoImpl:*************
**************La classe ConnexionForm:**************
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 private static final String SQL_SELECT_PAR_EMAIL_PASS = "SELECT * FROM profil WHERE password=? and email = ?"; public Utilisateur trouverMP(String email,String password)throws DAOException { Connection connexion = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; Utilisateur utilisateur = null; try { /* Récupération d'une connexion depuis la Factory */ connexion = daoFactory.getConnection(); preparedStatement = initialisationRequetePreparee( connexion,SQL_SELECT_PAR_EMAIL_PASS, false, email,password ); resultSet = preparedStatement.executeQuery(); /* Parcours de la ligne de données de l'éventuel ResulSet retourné */ if ( resultSet.next() ) { utilisateur = map( resultSet ); } } catch ( SQLException e ) { throw new DAOException( e ); } finally { fermeturesSilencieuses( resultSet, preparedStatement, connexion ); } return utilisateur; }
p
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 ublic final class ConnexionForm { private static final String CHAMP_EMAIL = "email"; private static final String CHAMP_PASS = "motdepasse"; private String resultat; private Map<String, String> erreurs = new HashMap<String, String>(); UtilisateurDao utilisateurDao; public ConnexionForm( UtilisateurDao utilisateurDao ) { this.utilisateurDao = utilisateurDao; } public String getResultat() { return resultat; } public Map<String, String> getErreurs() { return erreurs; } public Utilisateur connecterUtilisateur( HttpServletRequest request ) { /* Récupération des champs du formulaire */ String email = getValeurChamp( request, CHAMP_EMAIL ); String motDePasse = getValeurChamp( request, CHAMP_PASS ); Utilisateur utilisateur = new Utilisateur();
/* Validation du champ email. */
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 try { validationEmail( email ); } catch ( Exception e ) { setErreur( CHAMP_EMAIL, e.getMessage() ); } utilisateur.setEmail( email ); /* Validation du champ mot de passe. */ try { validationMotDePasse( motDePasse ); } catch ( Exception e ) { setErreur( CHAMP_PASS, e.getMessage() ); } utilisateur.setPassword( motDePasse ); try { validationUser(email,motDePasse); } catch(Exception e){ setErreur( CHAMP_EMAIL, e.getMessage() ); setErreur( CHAMP_PASS, e.getMessage() ); } utilisateur.setPassword( email ); utilisateur.setPassword( motDePasse ); /* Initialisation du résultat global de la validation. */ if ( erreurs.isEmpty()) { resultat = "Succès de la connexion."; } else { resultat = "Échec de la connexion."; } return utilisateur; } private void validationUser(String email,String motDePasse)throws Exception { if(utilisateurDao.trouverMP(email, motDePasse)==null && email!=null && motDePasse!=null) throw new Exception("utilisateur n'existe pas"); }
***************La JSP:connexion.jsp:******************
dsl pour le dérangement mais chui vraiment perdue,j'ai essayé toutes les possibilités sa n'a r1 donnée
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 <%@ page pageEncoding="UTF-8" %> <%@ page isELIgnored ="false" %> <%@page import="com.sdzee.bean.Utilisateur" %> <%@ page import="com.sdzee.forms.ConnexionForm" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Connexion</title> <link type="text/css" rel="stylesheet" href="form.css" /> </head> <body> <form method="post" action="connexion"> <fieldset> <legend>Connexion</legend> <p>Vous pouvez vous connecter via ce formulaire.</p> <label for="email">Adresse email <span class="requis">*</span></label> <input type="email" id="email" name="email" value="<c:out value="${utilisateur.email}"/>" size="20" maxlength="60" /> <span class="erreur">${form.erreurs['email']}</span> <br /> <label for="motdepasse">Mot de passe <span class="requis">*</span></label> <input type="password" id="motdepasse" name="motdepasse" value="" size="20" maxlength="20" /> <span class="erreur">${form.erreurs['motdepasse']}</span> <br /> <input type="submit" value="Connexion" class="sansLabel" /> <br /> <p class="${empty form.erreurs ? 'succes' : 'erreur'}">${form.resultat}</p> <%-- Vérification de la présence d'un objet utilisateur en session --%> <c:if test="${!empty sessionScope.sessionUtilisateur} "> <%-- Si l'utilisateur existe en session, alors on affiche son adresse email. --%> <p class="succes">Vous êtes connecté(e) avec l'adresse : ${sessionScope.sessionUtilisateur.email}</p> </c:if> <br /> </fieldset> </form> </body> </html>
On peux voir le code de map et de initialisationRequetePreparee ?
private static Utilisateur map( ResultSet resultSet ) throws SQLException {
Utilisateur utilisateur = new Utilisateur();
utilisateur.setIduser( resultSet.getLong( "id_user" ) );
utilisateur.setEmail( resultSet.getString( "email" ) );
utilisateur.setPassword( resultSet.getString( "password " ));
utilisateur.setNom( resultSet.getString( "nom" ) );
return utilisateur;
}
public static PreparedStatement initialisationRequetePreparee( Connection connexion, String sql, boolean returnGeneratedKeys, Object... objets ) throws SQLException {
PreparedStatement preparedStatement = connexion.prepareStatement( sql, returnGeneratedKeys ? Statement.RETURN_GENERATED_KEYS : Statement.NO_GENERATED_KEYS );
for ( int i = 0; i < objets.length; i++ ) {
preparedStatement.setObject( i + 1, objets[i] );
}
return preparedStatement;
}
Il y a un espace en trop derrière password.
Code : Sélectionner tout - Visualiser dans une fenêtre à part utilisateur.setPassword( resultSet.getString( "password " ));
merci pour votre repense,mais sa fonctionne tjr pas,
une petite remarque j'ai déja utiliser la fonction map() dans l'inscription est elle fonctionne bien
S'il te plait comment tu l'as rétabli tu peux m'envoyer le code de page ConnexionForm et UtilisateurDaoImpl et Connexion parce que ça marche pas pour moi aussi
je te remercie infiniment
Partager