Impossible de récupérer la valeur d'un champ
Bonjour
J'ai créé une base de données en mysql comportant plusieurs champs dont le champ "pwd" correspondant au mot de passe. Je voudrais récupérer le mot de passe pour un utilisateur en fonction de son identifiant. Voici mes codes:
Code:
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
|
private static final String SQL_SELECT_PWD = "SELECT distinct pwd FROM User WHERE id_user = ? ";
@Override
public String trouverPwd(long idUser) throws DAOException{
Connection connexion = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
String passe = null;
try {
/* Récupération d'une connexion depuis la Factory */
connexion = daoFactory.getConnection();
/*
* Préparation de la requête avec les objets passés en arguments
* (ici, uniquement un id) et exécution.
*/
preparedStatement = initialisationRequetePreparee( connexion, SQL_SELECT_PWD, false, idUser );
resultSet = preparedStatement.executeQuery();
/* Parcours de la ligne de données retournée dans le ResultSet */
if ( resultSet.next() ) {
passe= resultSet.getString("pwd");
System.out.println("pass est: "+passe);
}
} catch ( SQLException e ) {
throw new DAOException( e );
} finally {
fermeturesSilencieuses( resultSet, preparedStatement, connexion );
}
return passe;
}
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;
} |
Et lorsque j'appelle la méthode de récupération du mot de passe:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| private void validationUser(long idUser, String login, String hpwd, String apwd, String npwd, String cpwd) throws FormValidationException
{
if (userDao.verifierLogin(login, idUser) != null)
{
throw new FormValidationException("Ce login est déjà* utilisé!");
}
else
{
if(!apwd.isEmpty() || !npwd.isEmpty()|| !cpwd.isEmpty())
{
String passe = userDao.trouverPwd(idUser);
if(!passe.equals(apwd))
{
throw new FormValidationException("L'ancien mot de passe est erroné!!!!");
}
}
}
} |
J'ai ce message d'erreur:
Citation:
GRAVE: "Servlet.service()" pour la servlet [servlets.ModifierUser] a généré une exception
java.lang.NullPointerException
at forms.ModifierUserForm.validationUser(ModifierUserForm.java:160)
at forms.ModifierUserForm.traiterUser(ModifierUserForm.java:111)
at forms.ModifierUserForm.modifierUser(ModifierUserForm.java:69)
at servlets.ModifierUser.doPost(ModifierUser.java:42)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at filters.PrechargementFilter.doFilter(PrechargementFilter.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:836)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1839)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Je rappelle que le id en paramètre n'est pas null.
Merci