Validação Consulta BD com if

5 respostas
rolipam

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!

public void execDelete(){
		Pessoa p = new Pessoa();
		PessoaDao pd = new PessoaDao();
		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(Exception e){
			JOptionPane.showMessageDialog(null, "Erro :"+e.getMessage());
		}
	}

5 Respostas

Bruno_Cunha

O que você está usando para persistência dos dados no banco?

Seu método “deletar” no PessoaDao não possui retorno booleano (se deletou ou não)?

Nos passe a implementação deste método, para podermos te auxiliar melhor.

Caso existir, você pode fazer:

boolean apagou = pd.deletar(p.getId());

if (apagou) {
     ...
} else {
     ...
}
rolipam

Olá, obrigado pelo rápido retorno. Segue abaixo a implementação do método deletar em PessoaDao.

public void deletar(int id) throws Exception{
		
		abrirBanco();
		String sql = "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.

public void deletar(int id) throws Exception{
		
		abrirBanco();
		String sql = "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:

JOptionPane.showMessageDialog(null, "Erro :"+e.getMessage());

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"  ){ // Gostaria de uma condição (Validação) para tornar essa sentença "TRUE"
                  JOptionPane.showMessageDialog(null, "O ID "+p.getId() +" Foi Deletado com Sucesso!");	

}else{ // Ou seja, o ID Digitado não Existe no Banco de Dados
              	  JOptionPane.showMessageDialog(null, "O ID "+p.getId() +" Não Existe no Banco de Dados!");

}
M
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!");  
      
    }
Criado 16 de fevereiro de 2012
Ultima resposta 16 de fev. de 2012
Respostas 5
Participantes 3