Minha grande dúvida é a seguinte:
Eu quero solicitar ao usuario alterar dados de Aluno, onde ele irá clicar em um outputlink “link” para ser direcionado à visualizar dados e alterar
mas para isso vou ter que passar um objeto aluno para o meu método alterar. O que eu não quero é o seguinte:
- Criar uma variavel para pegar a chave primária da tabela, pois usando o UPDATE na cláusura WHERE vou ter comparar com uma chave primária
exemplo: UPDATE aluno SET nome = “TTT” WHERE idAluno = ?;
Ou seja eu teria que fazer um SELECT para pegar o idAluno que é chave primaria, de posse com idAluno eu iria fazer um UPDATE e colocar Where idAlulno = variável.
Estou fazendo isso pq meu banco de dados as chaves primárias são AUTO_INCREMENTO.
Tem uma forma de solucionar isso?
Se eu criar um atributo com o mesmo nome da chave primaría resolveria?
public boolean alterar(Aluno aluno) throws SQLException{
Connection con = getConexao();
//verificar inconsistencia com o banco de dados chave primaria
PreparedStatement ps = con.prepareStatement("UPDATE aluno SET nome = ?,endereco = ?,telefone = ?,estado = ?, cidade = ?,email = ?, WHERE nome = ?");
ps.setString(1, aluno.getNome());
ps.setString(2, aluno.getEndereco());
ps.setString(3, aluno.getTelefone());
ps.setString(4, aluno.getEstado());
ps.setString(5, aluno.getCidade());
ps.setString(6, aluno.getEmail());
con.close();
return ps.execute();
}
Meu formulario terá NOME,ENDEREÇO,TELEFONE,ESTADO,CIDADE,EMAIL ao submeté-lo serei direcioando ao AlunoDAO de conexão:
nesse ponto que entra minha dúvida: será necessario fazer um select para pegar o idAluno que é chave primária pois o update so funciona quando é comparado a uma chave primaria
where idAluno = 100 por exemplo.
Por enquanto não gostria de usar Hibernate,