Problemas para atualizar/excluir em um BD

4 respostas
FabricioPJ

Olá a todos. Estou fazendo (Ou tentando pelo menos) fazer um programa que utilize Banco de Dados. O que utilizo é o Apache Derby 10.2.2.0 junto com o NetBeans 5.0.

Tenho 3 classes, uma se chama "Contato", que contém os métodos gets e sets das variáveis "Telefone", "Nome" e "Endereço", todas Strings.

A outra classe, "Banco", contém os métodos para salvar, excluir e atualizar a tabela

E por último, o Frame

O problema é que quando mando excluir ou atualizar alguma pessoa em minha tabela, nada acontece. Vejam os códigos dos botões no Frame:

Método excluirContatos (Está na classe Banco)

try { PreparedStatement stmt = con.prepareStatement("DELETE FROM \"FABRICIO\".\"contatos\" WHERE TELEFONE = ?"); stmt.setString(1,tel); stmt.executeUpdate(); stmt.close(); } catch(SQLException e) { JOptionPane.showMessageDialog(null, " Erro: "+ e.getMessage(), "Cadastro de contatos", JOptionPane.ERROR_MESSAGE); } }

Botão Excluir (Está no frame)

Banco banco = new Banco();
banco.conecta();
Contato contato = new Contato();
contato.setTelefone(tfTel.getText());
contato.setNome(tfNome.getText());
contato.setEndereco(tfEnd.getText());
banco.excluirContato(String telefone);

Método atualizarContato (Está na classe Banco)

try {
            PreparedStatement stmt = con.prepareStatement("UPDATE \"FABRICIO\".\"contatos\" SET NOME = ?, ENDERECO = ? WHERE " +
                    "TELEFONE = ?");
            stmt.setString(1,c.getNome());
            stmt.setString(2,c.getEndereco());
            stmt.setString(3,c.getTelefone());
            stmt.executeUpdate();
            stmt.close();
        } 
        
        catch(SQLException e) {
            JOptionPane.showMessageDialog(null,"Erro: "
                    + e.getMessage(), "Cadastro de contatos", JOptionPane.ERROR_MESSAGE);
        }
    }

Botão Atualizar (Está no frame):

Contato c = new Contato();
referencia.atualizarContato(c);

Por favor, já testei tudo que conheço (pouca coisa) sobre isso, mas não obtive sucesso. Quem puder me ajudar, ficarei muito grato.

4 Respostas

cracatio

Olá. Tb não sei muito mas vamos lá.

não vou reposnder diretamente a sua pergunta mas vou lher dar um exemplo de com vc deve proceder.

Vamos supor que vc tenha o seguinte banco

Funcionario (idFunc, idDepartamento, nome, telefone)
Departamento (idDepartamento, IdFuncChefe, nome)

Primeiro vc deve criar uma classe Funcionario e uma departamento com os set´s e get´s para todos oa atributos. Depois vc Deve com já fez anterirormente criar a classe Banco com todos os metódos que vc precisa.

continua…

cracatio
Banco banco = new Banco();
 banco.conecta();
 Contato contato = new Contato();
 contato.setTelefone(tfTel.getText());
 contato.setNome(tfNome.getText());
 contato.setEndereco(tfEnd.getText());
 banco.excluirContato(String telefone);

errado:
banco .excluirContato(String telefone);

certo:
banco.excluirContato(telefone);

Pergunta de onde esta declarada e onde vc atribui um valor a esta variavel?

não seria:

banco.excluirContato(contato.getTelefone);

o método getTelefone deve retornar uma String!!!

Bom pense sobre.

qualque roputra dúvida entre em contato me mandando um e-mail já que op notificador de respostas está desligado.

FabricioPJ

Opa… obrigado pela atenção amigo. Vou dar uma olhada agora em meu código e postarei a resposta em breve.

FabricioPJ

Obtive resultados. Após uma noite inteira tentando e tentando… finalmente consegui.

Veja os códigos corretos:

Botão Excluir:

Banco banco = new Banco(); banco.conecta(); banco.excluirContato(tfTel.getText()); JOptionPane.showMessageDialog(null, "Contato deletado", "Aviso", JOptionPane.INFORMATION_MESSAGE);

Botão Atualizar:

Banco banco = new Banco(); banco.conecta(); Contato contato = new Contato(); contato.setTelefone(tfTel.getText()); contato.setNome(tfNome.getText()); contato.setEndereco(tfEnd.getText()); banco.atualizarContato(contato); JOptionPane.showMessageDialog(null, "Contato atualizado comn sucesso");

Obrigado pela ajuda colega.

Criado 28 de maio de 2007
Ultima resposta 29 de mai. de 2007
Respostas 4
Participantes 2