Não consigo atualizar os dados do Contato

1 resposta
M

Olá pessoal, estou desenvolvendo uma agenda em Java, utilizando 3 camadas. Estou com um problema e não to conseguindo indetificar o erro… Eu quero alterar os dados do contato e assim que clicar em Atualizar, quero que altere… mas o que está acontecendo é que estou adicionando um novo contato. :oops:

Persistencia:

public void atualizar(Contato contato) throws ClassNotFoundException, SQLException{
      String sql = "UPDATE contato SET nome=?, telefone=?, celular=?, endereco=?, bairro=?, cidade=?, datanasc=?, email=?, observacao=?, idcategoria? where idcontato=?";
      PreparedStatement ps = getPreparedStatement(sql);
      ps.setString(1, contato.getNome());
      ps.setString(2, contato.getTelefone());
      ps.setString(3, contato.getCelular());
      ps.setString(4, contato.getEndereco());
      ps.setString(5, contato.getBairro());
      ps.setString(6, contato.getCidade());
      ps.setString(7, contato.getDatanasc());
      ps.setString(8, contato.getEmail());
      ps.setString(9,  contato.getObservacao());
      ps.setInt(10, contato.getIdcategoria());
      ps.setInt(11, contato.getIdContato());
      ps.execute();
      ps.close();
      
  }

Negócio:

public class NContato {
    public int validarDados(List<Object> dadosContato) throws ClassNotFoundException, SQLException{
        if  (dadosContato.get(1).equals(""))
            return 1;
        if (!"".equals(dadosContato.get(7))){
               if (verificaData((String) dadosContato.get(7)) == false)
                   return 7;
            }
        return 0;    
    }
      public void cadastrarDadosAtualizados(List<Object> dadosContato) throws ClassNotFoundException, SQLException{
         Contato contato = new Contato();      
        contato.setNome((String) dadosContato.get(1));
        contato.setTelefone((String) dadosContato.get(2));
        contato.setCelular((String) dadosContato.get(3));
        contato.setEndereco((String) dadosContato.get(4));
        contato.setBairro((String) dadosContato.get(5));
        contato.setCidade((String) dadosContato.get(6));
        contato.setDatanasc((String) dadosContato.get(7));
        contato.setEmail((String) dadosContato.get(8));
        contato.setObservacao((String) dadosContato.get(9));
        if ((Integer)dadosContato.get(10) > 0){
           contato.setIdcategoria((Integer) dadosContato.get(10));
           contato.setIdContato((Integer)dadosContato.get(11));
        }
         ContatoDAO contatoDao = new ContatoDAO();
        contatoDao.atualizar(contato);
    }

Interface:

private void btnPegaDadosActionPerformed(java.awt.event.ActionEvent evt) {
      
      int id = 0;
      List<Contato> lista = new LinkedList<Contato>();
      try { 
        if(jTxtID.getText().length()!=0)
          id = Integer.parseInt(jTxtID.getText());
            NContato ngcContato = new NContato();
                try {
                    lista = ngcContato.buscarPorCateg(id);
                        try{
                        tNome.setText(lista.get(0).getNome());
                        tTelefone.setText(lista.get(0).getTelefone());
                        tCelular.setText(lista.get(0).getCelular());
                        tEndereco.setText(lista.get(0).getEndereco());
                        tCidade.setText(lista.get(0).getCidade());
                        tDataNasc.setText(lista.get(0).getDatanasc());
                        tEmail.setText(lista.get(0).getEmail());
                        tObservacao.setText(lista.get(0).getObservacao());
                        
                        }catch(Exception ex){
                            JOptionPane.showMessageDialog(null, "Contato com este ID não existe" ,"Informação",JOptionPane.INFORMATION_MESSAGE);  
                        }
                } catch (ClassNotFoundException ex) {
                    Logger.getLogger(FAltContato.class.getName()).log(Level.SEVERE, null, ex);
                } catch (SQLException ex) {
                    Logger.getLogger(FAltContato.class.getName()).log(Level.SEVERE, null, ex);
                }
      }catch(NumberFormatException ex){ 
       JOptionPane.showMessageDialog(null, "Esse Campo só aceita números" ,"Informação",JOptionPane.INFORMATION_MESSAGE); 
       jTxtID.grabFocus(); 
} 
private void btnAtualizaDadosActionPerformed(java.awt.event.ActionEvent evt) {
        List<Object> dadosContato = new LinkedList<Object>();
        dadosContato.add(0,"");
        dadosContato.add(1,tNome.getText());
        dadosContato.add(2,tTelefone.getText());
        dadosContato.add(3,tCelular.getText());
        dadosContato.add(4,tEndereco.getText());
        dadosContato.add(5,tBairro.getText());
        dadosContato.add(6,tCidade.getText());
        dadosContato.add(7,tDataNasc.getText());
        dadosContato.add(8,tEmail.getText());
        dadosContato.add(9,tObservacao.getText());
        if (cbCategoria.getSelectedIndex() == 0){
             dadosContato.add(10,0);
             dadosContato.add(11, jTxtID.getText());
        }
        else{
            Categoria cat = new Categoria();
            cat = (Categoria) cbCategoria.getSelectedItem();
            dadosContato.add(10,cat.getIdcategoria());
        }
        NContato ngcContato = new NContato();
        // Verifica os dados inseridos e retorna o codigo erro
        int opcao = 0;
        try {
            opcao = ngcContato.validarDados(dadosContato);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(FAltContato.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(FAltContato.class.getName()).log(Level.SEVERE, null, ex);
        }
            if (opcao == 1){
                JOptionPane.showMessageDialog(this, "Campo nome não pode ser vazio!", "Erro de validação", JOptionPane.ERROR_MESSAGE);
                tNome.requestFocus();
            }
            if (opcao == 7){
                JOptionPane.showMessageDialog(this, "Data Invalida!", "Erro de validação", JOptionPane.ERROR_MESSAGE);
                tDataNasc.requestFocus();
            }
            if (opcao != 0)
                JOptionPane.showMessageDialog(this, "Erro ao gravar os dados!", "Erro de validação", JOptionPane.ERROR_MESSAGE);
            else
                try {
            ngcContato.cadastrarContato(dadosContato);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(FAltContato.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(FAltContato.class.getName()).log(Level.SEVERE, null, ex);
        }
                JOptionPane.showMessageDialog(this, "Atualizado com Sucesso!", "Atualização finalizada", JOptionPane.INFORMATION_MESSAGE);
    }

1 Resposta

muniquewassem

Oi mayckonx!

Bem, vi que sua aplicação é uma agenda, então sugiro que você dê uma olhada aqui: http://mballem.wordpress.com/2011/02/21/utilizando-swing-com-banco-de-dados/

O tutorial é ótimo, acho que você vai entender bem. Qualquer coisa avisa aqui que posso te dar alguma ajuda.

Criado 16 de junho de 2011
Ultima resposta 18 de jun. de 2011
Respostas 1
Participantes 2