Estou tentando fazer um método de alterar senha, no meu if ele passa como se estivesse tudo certo mais não altera no banco de dados, eu debuguei e parece que a minha variavel cpfApoio está sendo passada como nula
Aqui vai o código:
public boolean AlterarSenha(String senha) {
Aluno aluno = new Aluno();
// comandos banco de dados
String sql = "update aluno set senha = ? where cpf = " + aluno.getCpfApoio();
// conectando no banco de dados
Connection con = Conexao.Conectar();
try {
PreparedStatement stm = con.prepareStatement(sql);
stm.setString(1, senha);
stm.execute();
} catch (SQLException ex) {
System.out.println("Erro:" + ex.getMessage());
return false;
}
return true;
}
public boolean AlterarSenha(String senha) {
Aluno aluno = new Aluno();
// comandos banco de dados
//não convém passar variáveis diretamente na query sql, pois é um convite para sql injection //
String sql = "update aluno set senha = ? where cpf = ?;
// conectando no banco de dados
Connection con = Conexao.Conectar();
try {
PreparedStatement stm = con.prepareStatement(sql);
stm.setString(1, senha);
stm.setDouble(2, aluno.getCpfApoio());
stm.execute();
} catch (SQLException ex) {
System.out.println("Erro:" + ex.getMessage());
return false;
}
return true;
}
//////////// no formulario falta informar o metodo, se é post ou get////////
<body>
<form action="recebeAlterarSenha.jsp" method="post">
<input type="password" name="senha" required="required">
<input type="submit" value="Alterar">
</form>
</body>
//////
Verifique se no output do servidor (conteiner) se tem algum erro
public boolean AlterarSenha(String senha) {
// aqui você acabou de criar um objeto do tipo Aluno
Aluno aluno = new Aluno();
String sql = "update aluno set senha = ? where cpf = ?";
Connection con = Conexao.Conectar();
try {
PreparedStatement stm = con.prepareStatement(sql);
stm.setString(1, senha);
// e aqui quer obter o CpfApoio do objeto que acabou de criar?
// esse objeto acabou de ser criado, ele não tem nada setado...
stm.setDouble(2, aluno.getCpfApoio());
stm.execute();
} catch (SQLException ex) {
System.out.println("Erro:" + ex.getMessage());
return false;
}
return true;
}
O [staroski] tem razão, o problema é que está a enviar para duas jsp’s, onde em cada JSP cria um objeto Aluno aluno = new Aluno();
Assim vai perder o set cpf, quando criar um novo objeto na segunda jsp, o ideal era efetuar a validação toda num só JSP, onde cria um objeto único e seta os valores de cpf e senha.