[RESOLVIDO]Excluir Cliente no Banco de Dados

13 respostas
GUICS

Como eu faço para excluir um cadastro de cliente em um banco de dados usando interface gráfica e conexão derby?

As Ids do cliente são geradas automaticamente e são do tipo Long.

Segue meu código:

excluir.addActionListener(new ActionListener() {   
  
            public void actionPerformed(ActionEvent arg0) {   
                CadastroJpaController jpa = new CadastroJpaController();   
                   
                List<Cadastro> lista = jpa.findCadastroEntities();   
                for (Cadastro l : lista) {   
                       
                    String str;   
                    str=JOptionPane.showInputDialog("Digite a ID");   
                    long id1=Long.parseLong(str);   
                    Cadastro obj = new Cadastro();   
                    obj.setId(id1);   
                    JOptionPane.showConfirmDialog(null, "Cliente Deletado: " + l.getId() + " " + l.getNome() + " " + l.getEndereco() + " " + l.getHosts() + "  " + l.getMac() + "  " + l.getLogin() + "  " + l.getSenha());   
                    try {   
                        jpa.destroy(l.getId());   
                    } catch (NonexistentEntityException ex) {   
                        Logger.getLogger(Aplicacao.class.getName()).log(Level.SEVERE, null, ex);   
                    }   
                       
                }   
                   
                   
            }   
        });

13 Respostas

GUICS

O código acima só deleta o primeiro cliente da lista, independente do que é digitado para excluir.

AlexandreTLazaro

seguinte…vc quer deletar todos os registros ou apenas um? pq vc tah fazendo um for ali e pegando um Id…explique melhor o q vc quer…

GUICS

Deletar tudo relacionado a Id do cliente…somente um cliente. ISso a partir de um número que o usuário após clicar em “excluir” aparece uma tela dizendo: " DIGITE A ID" ele digita e gostaria de pegar essa Id transformá-la para long e assim poder indicar para o banco de dados a id a ser excluída…

renamed

“Excluir tudo”, que você diz, é o cliente mais de uma tabela com um só comando ou esse tudo é apenas da tabela cliente?

Andre_Rosa

Acho que entendi. Você quer que o usuário informe a ID e, à partir dessa ID, deletar um usuário. Basicamente, basta especificar a ID usando o WHERE:

DELETE FROM TABELA WHERE ID = 123

Onde “123”, no exemplo, seria ID do usuário.

GUICS

Andre Rosa:
Acho que entendi. Você quer que o usuário informe a ID e, à partir dessa ID, deletar um usuário. Basicamente, basta especificar a ID usando o WHERE:

DELETE FROM TABELA WHERE ID = 123

Onde “123”, no exemplo, seria ID do usuário.

MAs no meu códigfo como implemento para pegar da variável String ‘str’ e converter para Long e assim implementar no comando “destroy” ali em cima…

GUICS

Excluir tudo significa a partir da id digitada como uma string, passar para long e aplicar no destroy, excluindo o nome da id, o endereço da id, o tel da id e etc… excluir tudo relacionado aquela id

AlexandreTLazaro

vc não vai fazer aquele for…vc soh vai mandar tua classe de conexão com o banco excluir o id selecionado…

para vc transformar string em long vc faz…

Long.parseLong([suaString])

tenta aew e v se resolve teu problema

GUICS

Dá erro na linha onde está "jpa.destroy(l.getId());
Por tirar o for…
Como eu aplicaria no destroy retirando o for?

AlexandreTLazaro

Tenta entender isso aew...

List<Cadastro> lista = jpa.findCadastroEntities();     
                
                    //essas variáveis e o JOptionPane devem ficar fora do for...
                    String str;     
                    str=JOptionPane.showInputDialog("Digite a ID");     
                    long id1=Long.parseLong(str);
                    Cadastro obj = new Cadastro();

                    for (Cadastro l : lista) {
                    
                       //faça um if pra ver se o id q vc quer deletar eh igual ao q estah na lista
                       if(l.id == id1) {
                          obj.setId(id1);     
                          JOptionPane.showConfirmDialog(null, "Cliente Deletado: " + l.getId() + " " + l.getNome() + " " + l.getEndereco() + " " + l.getHosts() + "  " + l.getMac() + "  " + l.getLogin() + "  " + l.getSenha());
                    
                           try {     
                              jpa.destroy(l.getId());     
                           } 
                           catch (NonexistentEntityException ex) {     
                              Logger.getLogger(Aplicacao.class.getName()).log(Level.SEVERE, null, ex);     
                           }
                       }    
                         
                    }
AlexandreTLazaro

CORRIGIDO
tenta isso aew kra...

excluir.addActionListener(new ActionListener() {     
        
                public void actionPerformed(ActionEvent arg0) {     
                    CadastroJpaController jpa = new CadastroJpaController();     

					//essas variáveis e o JoptionPane devem estar fora do for...
					String str;     
					str=JOptionPane.showInputDialog("Digite a ID");     
					long id1=Long.parseLong(str);     
					Cadastro obj = new Cadastro();
						
                    List<Cadastro> lista = jpa.findCadastroEntities();     
                    for (Cadastro l : lista) {
                             
						//aqui vc faz um if pra verificar se o id q vc digitou eh igual ao q estah na lista
						if(id1 != 0 && id1 == l.getId()) {
							obj.setId(id1);
							JOptionPane.showConfirmDialog(null, "Cliente Deletado: " + l.getId() + " " + l.getNome() + " " + l.getEndereco() + " " + l.getHosts() + "  " + l.getMac() + "  " + l.getLogin() + "  " + l.getSenha());
							try {
								jpa.destroy(l.getId());
							} catch (NonexistentEntityException ex) {
								Logger.getLogger(Aplicacao.class.getName()).log(Level.SEVERE, null, ex);
							}
						}
						else {
							JOptionPane.showMessageDialog(null, "Não foi encontrado nenhum cliente com este ID");
						}
                             
                    }    
                         
                }
            });
GUICS

Eu já tinha seguido sua dica de tirar o for mas recoloquei pq gostei da verificação se a id digitada está correta, acabei por solucionar o problema do destroy que ali ele exclui todos na lista e o setId não tem função nenhuma, oq fiz foi apagar a linha JOptionPane.showConfirmDialog(null, "Cliente Deletado: " + l.getId() + " " + l.getNome() + " " + l.getEndereco() + " " + l.getHosts() + " " + l.getMac() + " " + l.getLogin() + " " + l.getSenha());
e aplicar corretamente o destroy

jpa.destroy(id);
e não jpa.destroy(l.getId());
Obrigado,
Solucionado!!

AlexandreTLazaro

boa kra…

coloca resolvido no tópico agora…

qqer coisa estamos aih kra!

Criado 18 de novembro de 2011
Ultima resposta 23 de nov. de 2011
Respostas 13
Participantes 4