Olá pessoal, sou novo por aqui e não vi nada relacionado com minha dúvida. Bom, é o seguinte estou desenvolvendo um programinha em java SE que manipula dados no banco de dados. Gostaria que me ajudassem a validar uma exclusão no banco, se e somente se o número do ID digitado (que se pretende excluir do banco de dados) existir no banco. segue abaixo o trecho do código. Obrigado!
publicvoidexecDelete(){Pessoap=newPessoa();PessoaDaopd=newPessoaDao();try{p.setId(Integer.valueOf(JOptionPane.showInputDialog("Digite o ID que deseja Deletar:")));pd.deletar(p.getId());//if(p.getId() "Existe no Banco de Dados" ){JOptionPane.showMessageDialog(null,"O ID "+p.getId()+" Foi Deletado com Sucesso!");//}else{// JOptionPane.showMessageDialog(null, "O ID "+p.getId() +" Não Existe no Banco de Dados!");//}}catch(Exceptione){JOptionPane.showMessageDialog(null,"Erro :"+e.getMessage());}}
Olá, obrigado pelo rápido retorno. Segue abaixo a implementação do método deletar em PessoaDao.
publicvoiddeletar(intid)throwsException{abrirBanco();Stringsql="Delete from pessoa where id_pessoa=?";pstm=con.prepareStatement(sql);pstm.setInt(1,id);pstm.execute();fecharBanco();}
Porém o tratamento é feito pelo método execDelete na classe Main, que chama o método deletar (da classe PessoaDao). Na verdade, o que eu realmente quero é uma forma de validar (com if-else) a exclusão de um ID (que será digitado pelo usuário), se e somente se esse ID existir no Banco de dados, caso contrário ele mostra uma mensagem de erro. Se ajuda em alguma coisa, utilizo o PostgreSQL 9.0.
Bruno_Cunha
rolipam:
Olá, obrigado pelo rápido retorno. Segue abaixo a implementação do método deletar em PessoaDao.
publicvoiddeletar(intid)throwsException{abrirBanco();Stringsql="Delete from pessoa where id_pessoa=?";pstm=con.prepareStatement(sql);pstm.setInt(1,id);pstm.execute();fecharBanco();}
Porém o tratamento é feito pelo método execDelete na classe Main, que chama o método deletar (da classe PessoaDao). Na verdade, o que eu realmente quero é uma forma de validar (com if-else) a exclusão de um ID (que será digitado pelo usuário), se e somente se esse ID existir no Banco de dados, caso contrário ele mostra uma mensagem de erro. Se ajuda em alguma coisa, utilizo o PostgreSQL 9.0.
Da forma que é feita, sugiro você tratar com Exceptions.
Se ocorrer algum erro no “deletar”, ele vai lançar uma exceção para quem chamou, e entrar no seu:
Ou seja, seu código está correto. Não precisa de nenhum “if”, se ele continuar a execução, é porque não ocorreu erro ao deletar, ok?
Mas se você quer verificar se o registro existe ou não existe ANTES, aí terá que fazer um SELECT…
Espero ter ajudado.
rolipam
Acho que não estou me explicando direito!!! O que eu quero é que se for digitado um valor para ID que não existe no banco de dados, apareça a mensagem “O ID informado não existe”. Se o ID digitado existir, ele será deletado. Por Exemplo, no meu banco de dados possuo 10 pessoas cadastradas (id 1 a 10). Se o usuário digitar um desses números, o id será apagado da tabela, mas se por engano ele digitar um número que não exista (p. exemplo: 33) em vez de aparecer a mensagem “O ID 33 foi Deletado com Sucesso!” aparecerá a mensagem “O ID 33 Não Existe no Banco de Dados” conforme o código.
if(p.getId()"Existe no Banco de Dados"){//Gostariadeumacondição(Validação)paratornaressasentença"TRUE"JOptionPane.showMessageDialog(null,"O ID "+p.getId()+" Foi Deletado com Sucesso!");
}else{//Ouseja,oIDDigitadonãoExistenoBancodeDadosJOptionPane.showMessageDialog(null,"O ID "+p.getId()+" Não Existe no Banco de Dados!");
}
M
Marcelo_Junior
Para fazer da maneria que você disse: Faça um metodo para pesquisar o id no banco, faça esse metodo com retorno boolean, e depois use o metodo no seu if...
if(pd.pesquisar(id)){pd.deletar(id);JOptionPane.showMessageDialog(null,"O ID "+p.getId()+" Foi Deletado com Sucesso!"); }else{JOptionPane.showMessageDialog(null,"O ID "+p.getId()+" Não Existe no Banco de Dados!"); }