Não consigo implementar Botão salvar hora com insert hora com update...[resolvido]

8 respostas
caioamante

Estou querendo implementar o botão salvar mais estou tendo dificuldades…

public void salvar() {
        try {
            Contato c1 = new Contato();
            c1.setNome(jTNome.getText().toUpperCase());
            c1.setEndereco(jTEndereco.getText().toUpperCase());
            c1.setTel(jTTelefone.getText().toUpperCase());
            c1.setEmail(jTEmail.getText().toUpperCase());
            c1.setSexo(jCSexo.getSelectedItem().toString());
            ContatoDao dao = new ContatoDao();
            d[color=red]ao.adiciona(c1); // TODO add your handling code here:[/color]
            JOptionPane.showMessageDialog(null, "Contato cadastrado com sucesso!!!");
        } catch (SQLException ex) {
            Logger.getLogger(jTAgendaContatos.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null, "Ocorreu algum erro verifique!!");
        }
    }

Esse salvar funciona normalmente … porém só adiciona dados … eu gostaria que ele fosse acionado e verificasse se é um item novo ou uma alteração e executar.
Tenho o metodo alterar

public void alterar() throws SQLException{
        Contato c1 = new Contato();
            c1.setId(Long.valueOf(jTId.getText()));
            c1.setNome(jTNome.getText().toUpperCase());
            c1.setEndereco(jTEndereco.getText().toUpperCase());
            c1.setTel(jTTelefone.getText().toUpperCase());
            c1.setEmail(jTEmail.getText().toUpperCase());
            c1.setSexo(jCSexo.getSelectedItem().toString());
            ContatoDao dao = new ContatoDao();
            [color=red]dao.altera(c1);[/color]

mas fica estranho pois na verdade o alterar só deveria abrir os campos para editar… isso eu sei fazer… porem não sei configurar o salvar para hora incluir e hora alterar…
alguem pode dar uma luz…

obrigado

8 Respostas

natureza

Coloca dentro das tags code seu código.

caioamante

pronto… será que agora alguem pode me ajudar?
valeuuu pessoall

saninaimayer

Cara, trate pela sua chave primária, se ela tiver setada no seu formulário quer dizer que vc executará um update, caso contrário será um insert. Pelo que vi você utiliza um número inteiro como chave, então fica fácil.

Espero ajudar.

S

algo do tipo…

if(Long.valueOf(jTId.getText())==null //ou vazio, sei lá){ //insert } else { //update }

caioamante

Amigos, eu fiz da seguinte forma

public void salvar() throws SQLException { if (Long.valueOf(jTId.getText()) == null) { try { Contato c1 = new Contato(); c1.setNome(jTNome.getText().toUpperCase()); c1.setEndereco(jTEndereco.getText().toUpperCase()); c1.setTel(jTTelefone.getText().toUpperCase()); c1.setEmail(jTEmail.getText().toUpperCase()); c1.setSexo(jCSexo.getSelectedItem().toString()); ContatoDao dao = new ContatoDao(); dao.adiciona(c1); // TODO add your handling code here: JOptionPane.showMessageDialog(null, "Contato cadastrado com sucesso!!!"); } catch (SQLException ex) { Logger.getLogger(jTAgendaContatos.class.getName()).log(Level.SEVERE, null, ex); JOptionPane.showMessageDialog(null, "Ocorreu algum erro verifique!!"); } //insert } else { { Contato c1 = new Contato(); c1.setId(Long.valueOf(jTId.getText())); c1.setNome(jTNome.getText().toUpperCase()); c1.setEndereco(jTEndereco.getText().toUpperCase()); c1.setTel(jTTelefone.getText().toUpperCase()); c1.setEmail(jTEmail.getText().toUpperCase()); c1.setSexo(jCSexo.getSelectedItem().toString()); ContatoDao dao = new ContatoDao(); dao.altera(c1); } //update } }

O alterar está dando certinho porem o insert está dando problemas

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Long.parseLong(Long.java:424) at java.lang.Long.valueOf(Long.java:518) at caio.forms.jTAgendaContatos.salvar(jTAgendaContatos.java:404) at caio.forms.jTAgendaContatos.jBSalvarActionPerformed(jTAgendaContatos.java:305) at caio.forms.jTAgendaContatos.access$300(jTAgendaContatos.java:32) at caio.forms.jTAgendaContatos$4.actionPerformed(jTAgendaContatos.java:122) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6216) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5981) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4583) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4413) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2475) at java.awt.Component.dispatchEvent(Component.java:4413) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Parece que ele está dando conflito no nulo tentei com o vazio’’ e nao deu tb ocorreu o mesmo erro…
essa verificação eu ja tinha tentado com ela… realmente está proximo mais estou quebrando a cabeça por isso pedi ajuda… valeu mesmo pessoal

S

deixa na linha 2 só:

Ele ta lançando exceção NumberFormatException pra converter de uma string vazia pra Long:

caioamante
public void  salvar() throws SQLException {
        Contato c1 = new Contato();
        ContatoDao dao = new ContatoDao();
        
        if(jTId.getText().equals("")){
            try {
                
                c1.setNome(jTNome.getText().toUpperCase());
                c1.setEndereco(jTEndereco.getText().toUpperCase());
                c1.setTel(jTTelefone.getText().toUpperCase());
                c1.setEmail(jTEmail.getText().toUpperCase());
                c1.setSexo(jCSexo.getSelectedItem().toString());
                dao.adiciona(c1); // TODO add your handling code here:
                JOptionPane.showMessageDialog(null, "Contato cadastrado com sucesso!!!");
            } catch (SQLException ex) {
                Logger.getLogger(jTAgendaContatos.class.getName()).log(Level.SEVERE, null, ex);
                JOptionPane.showMessageDialog(null, "Ocorreu algum erro verifique!!");
            }
            //insert
        } else {
            {
                
                c1.setId(Long.valueOf(jTId.getText()));
                c1.setNome(jTNome.getText().toUpperCase());
                c1.setEndereco(jTEndereco.getText().toUpperCase());
                c1.setTel(jTTelefone.getText().toUpperCase());
                c1.setEmail(jTEmail.getText().toUpperCase());
                c1.setSexo(jCSexo.getSelectedItem().toString());
                dao.altera(c1);
                JOptionPane.showMessageDialog(null, "Contato alterado !!!");
            }
            //update
        }
    }

Segue o código de forma correta

Obrigado mesmo pela ajuda...
valeu

S

Disponha!

Criado 11 de novembro de 2009
Ultima resposta 11 de nov. de 2009
Respostas 8
Participantes 4