[RESOLVIDO]Excluir Cliente no Banco de Dados

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);   
                    }   
                       
                }   
                   
                   
            }   
        });  

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

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…

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…

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

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.

[quote=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.[/quote]

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…

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

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

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

Tenta entender isso aew…

[code]
List 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);     
                       }
                   }    
                     
                }[/code]

CORRIGIDO
tenta isso aew kra…

[code] 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");
					}
                         
                }    
                     
            }
        });[/code]

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 [quote]jpa.destroy(id);[/quote] e não jpa.destroy(l.getId());
Obrigado,
Solucionado!!

boa kra…

coloca resolvido no tópico agora…

qqer coisa estamos aih kra!