Pessoal, estou tentando excluir umas informções no banco que tem uma tabela chamada pessoa e tem os seguintes campos: cpf, nome, profissao, sexo, doador, superior, habilitacao.
fiz o método assim e não está dando certo:
public void excluir() {
String sql = "DELETE FROM cadastro.pessoa where cpf = cpf " +
"AND nome = nome " +
"AND profissao = profissao " +
"AND sexo = sexo " +
"AND doado = doador " +
"AND superior = superior " +
"AND habilitacao = habilitacao";
try {
PreparedStatement stmt = getConnection().prepareStatement(sql);
stmt.setLong(1, cpf);
stmt.setString(2, nome);
stmt.setString(3, profissao);
stmt.setString(4, sexo);
stmt.setString(5, doador);
stmt.setString(6, superior);
stmt.setString(7, habilitacao);
stmt.execute();
JOptionPane.showMessageDialog(null, "O Registro foi Excluido com Sucesso");
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Houve um erro ao tentar Excluir o Registro: \n" + e.getMessage());
e.printStackTrace();
}
String sql = "DELETE FROM cadastro.pessoa where cpf = ? AND nome = ? AND profissao = ? AND sexo = ? AND doado = ? AND superior = ? AND habilitacao = ?";
o resto fica igual. Apesar que neste caso, bastava usar o CPF como parametro já que ele é único para cada pessoa.
E se i==0 ? lança exceção ?
Esse código de confirmação é bom para insert e update
para verifica que realmente aconteceu a operação, mas
num delete é inutil. Repare que se não existir nenhum registro nas
condições do where, ele está deletado por default.
Ou seja, i==0 para delete não é uma exceção à regra, portanto
no caso do delete não precisa fazer aquela verificação.
E se i==0 ? lança exceção ?
Esse código de confirmação é bom para insert e update
para verifica que realmente aconteceu a operação, mas
num delete é inutil. Repare que se não existir nenhum registro nas
condições do where, ele está deletado por default.
Ou seja, i==0 para delete não é uma exceção à regra, portanto
no caso do delete não precisa fazer aquela verificação.
[/quote]
???
Se i == 0, NAO gera exceception. Simplesmente não foi encontrado o que tem na clausula “where”.
Então , mas se não lança excação, não deveria a mensagem"deletado" se mostrada mesmo quando i==0 ? Se não, pq não ?[/quote]
Não. Na minha opinião não. Imagine que o usuário precise da informação que algo foi deletado. Se nada foi encontrado na base, e vc informa que algo foi deletado, vc está fornecendo informação errada, ao contrário do que vc afirmou nesse post:
um if … se i == zero informa que nada foi deletado pois os dados sao incompativeis… se for maior informa a quantidade … normalmente exclusoes são assim … certo ?