Excluir dados de duas tabelas JAVA

17 respostas
postgresqlprogramaçãojava
F

Estou desenvolvendo uma aplicação Java para desktop e gostaria de que quando o usuário clicasse no botão excluir, excluísse dados de duas tabelas ao mesmo tempo, uma com nome visitas e outra com nome chamadas.

Mas ao clicar no botão de excluir ele exclui apenas os dados das visitas e não das chamadas.

Classe DAO

public String excluirChamada(String nome){


  String resp="";
 try{

   Connection con = Conecta.conexao();
   Statement st = con.createStatement();

   String sql2 ="delete  from tb_chamadas where cha_nome like  '%" + nome +"%'";


  st.executeUpdate(sql2);


   resp="dados da chamadas apagados";
   excluirVisita(nome);
    st.close();
   con.close();
   }
catch(Exception e){
     JOptionPane.showMessageDialog(null,"Erro na exclusao dad chamadas:\n Erro:" + e.getMessage());
}
 return resp;

}

Classe VisitasDAO que contem o método excluirVisita();

public String excluirVisita(String nome) {


 String resp="";
 try{

   Connection con = Conecta.conexao();
   Statement st = con.createStatement();


   String sql ="DELETE FROM tb_visitas WHERE cha_nome like '%"+nome+"%'";


  st.executeUpdate(sql);

   st.close();
   con.close();
   resp="OK";
  }
catch(Exception e){
    resp= e.toString();
}
return resp;

 }

Botão excluir

private void btnExcluirActionPerformed(java.awt.event.ActionEvent evt) {                                           
// TODO add your handling code here:

int resp3 = JOptionPane.showConfirmDialog(null, "Deseja mesmo exlcuir os dados?");
if (resp3 == JOptionPane.YES_OPTION) {
    String nome= txtNome.getText();

    String resp2 = new ChamadasDAO().excluirChamada(txtNome.getText());



     JOptionPane.showMessageDialog(this, resp2);
     
    mostrarVisitas();
    mostrarChamadas();
    limparCampos();
} else {
    JOptionPane.showMessageDialog(this, "Erro ao excluir");
}
}

17 Respostas

J

Ficou meio confuso pois não sei como está estruturado seu BD, mas pelo jeito que você disse, aparentemente sua visita é dependente de chamada!
Realize o processo inverso, exclua primeiro as visitas e depois as chamadas.

F

No caso as minhas tabelas do banco de dados não possuem relacionamentos

J

O que acontece se executar o SQL contido em sql2 direto no banco?

Posta o conteúdo da tabela mostrando com esse dado que quer buscar e poste também o SQL acima sendo executado no banco.

F

ele exclui normalmente os dados das chamadas

J

Esse nao é SQL final executado, tem que ser já com o conteudo da variavel nome.

F

mas eu passo o nome digitado pelo parametro

F

e como vou colocar o conteudo da variavel nome ?

J

Copia a string que é retornada pela variável sql2.

F

essa string resp="dados da chamadas apagados";

J

Debuga, ve o que sql2 retorna e copia.

F

ela me retorna isso aqui delete from tb_chamadas where cha_nome like '%Ronaldo%'

J

Posta o conteúdo da tabela mostrando a linha que quer apagar.

F

Quero que apague todos os registros com nome do cliente chamado ronaldo
Minha JTable

Minha tabela do banco de dados das visitas

Minha tabela chamadas

F

postei

J

Nao tem Ronaldo em tb_chamadas

F

desculpe coloquei a imagem errada

F

não sei porque não ta indo, quando eu debugo o código ele funciona mas quando rodo a aplicação normalmente ele não funciona corretamente

Criado 3 de dezembro de 2017
Ultima resposta 4 de dez. de 2017
Respostas 17
Participantes 3