Erro ao deletar uma linha seleciona em uma tabela

5 respostas
Tektron

private void BTN_ExcluirSelecionadoActionPerformed(java.awt.event.ActionEvent evt) { if (Integer.parseInt(TBL_Tabela.getValueAt(TBL_Tabela.getSelectedRow(), 0).toString()) > 0) { del.setDeletar((TBL_Tabela.getValueAt(TBL_Tabela.getSelectedRow(), 1).toString())); del.deletaDados(del.getDeletar()); } }

Estou tentando excluir uma linha selecionada em uma tabela, mas esta dando erro quando clico no botão para excluir.

erro:

Exception in thread AWT-EventQueue-0 java.lang.NumberFormatException: For input string: testeempresa

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

at java.lang.Integer.parseInt(Integer.java:492)

at java.lang.Integer.parseInt(Integer.java:527)

at telas.TelaInicial.BTN_ExcluirSelecionadoActionPerformed(TelaInicial.java:240)

at telas.TelaInicial.access$300(TelaInicial.java:15)

at telas.TelaInicial$5.actionPerformed(TelaInicial.java:126)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6505)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)

at java.awt.Component.processEvent(Component.java:6270)

at java.awt.Container.processEvent(Container.java:2229)

at java.awt.Component.dispatchEventImpl(Component.java:4861)

at java.awt.Container.dispatchEventImpl(Container.java:2287)

at java.awt.Component.dispatchEvent(Component.java:4687)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)

at java.awt.Container.dispatchEventImpl(Container.java:2273)

at java.awt.Window.dispatchEventImpl(Window.java:2719)

at java.awt.Component.dispatchEvent(Component.java:4687)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:713)

at java.awt.EventQueue.access$000(EventQueue.java:104)

at java.awt.EventQueue$3.run(EventQueue.java:672)

at java.awt.EventQueue$3.run(EventQueue.java:670)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)

at java.awt.EventQueue$4.run(EventQueue.java:686)

at java.awt.EventQueue$4.run(EventQueue.java:684)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:683)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

se alguem tiver uma solução.

5 Respostas

Z111

esta é a linha do seu erro:
java.lang.NumberFormatException: For input string: “testeempresa”

está tentando fazer um parse para int em uma string inparseável

T

Realmente guri, o erro é no tipo de veriável.
Passa um valor numérico que vai mole mole.

Tektron

mas eu preciso passar uma string e não sei como mudar.

método:

public boolean deletaDados(String deletar){ boolean Retorno = false; try { int resultado = abreConexoes.stmt.executeUpdate("delete from cadastro where cpfncnj=" + deletar); if (resultado != 0) { Retorno = true; } } catch (Exception e) { } return Retorno; }

private void BTN_ExcluirSelecionadoActionPerformed(java.awt.event.ActionEvent evt) { if (Integer.parseInt(TBL_Tabela.getValueAt(TBL_Tabela.getSelectedRow(), 1).toString()) > 0) { del.setDeletar((TBL_Tabela.getValueAt(TBL_Tabela.getSelectedRow(), 1).toString())); del.deletaDados(del.getDeletar()); } }

A chave PK se encontra na segunda coluna da tabela e no BD

Tektron

Tenho outro problema no mesmo projeto.

public String gerachave() {

        //xxxxX-xxxxX-xxxxX-xxxxX-xxxxX
        //12345678901234567890123456789
        //         1         2         3
        String aux = "";
        int sorteio = 0;
        char base32[] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'J', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'V', 'X', 'Z'};
        int auxVeri = 0;



        for (int i = 1; i < 29; i++) {

            if (i % 6 == 0) {
                aux += "-";

            } else {
                if (i == 5 || i == 11 || i == 17 || i == 23 || i == 29) {
                    for (int k = (i - 4); k < i; k++) {
                        for (int j = 0; j != base32[i]; j++) {
                            if (j == base32[i]) {
                                auxVeri += j;
                            } else {
                                if (k == i) {
                                    auxVeri = auxVeri / 4;
                                    aux += auxVeri;
                                }
                            }
                        }
                    }

                } else {
                    int base = 31;
                    sorteio = (int) (Math.random() * 31);
                    aux += base32[sorteio];
                }
            }
        }
        return (aux);
    }

ele deveria que retornar xxxxX-xxxxX-xxxxX-xxxxX-xxxxX
onde X é o verificador
mas só retorna xxxx-xxxx-xxxx-xxxx-xxxx

não sei o meu erro

T

Cara, acho que o problema está sendo na hora em que você está concatenando um texto em uma variável inteira.

O Statement retorno um inteiro, ok. Isso funciona na compilação, mas na execução da problema.
Caso você precise manipular os dados retornados e usa-los para outros fins, sugiro que faça o seguinte.
(Não gosto muito do stmt, prefiro trabalhar com java.sql.statement mas no fim da tudo na mesma).

public boolean deletaDados(String deletar){  
         
      boolean Retorno = false;  

      java.sql.connection conn = null;
      java.sql.statement st = null;
      java.sql.resultSet rs = null;

      //Faz a conexão com alguma base de dados...
      //cria o statement...
      try {  
      
            String query = "DELETE FROM cadastro WHERE cpfncnj = " + deletar;

            rs = st.executeUpdate(query);

            //Aqui você pega seu retorno.
            if(rs.next()) {  
                  Retorno = true;  
            }  
      } catch (Exception e) {  
      //Erro
      }  
      return Retorno;  
}

Com certeza não terá problemas se tentar dessa forma…
Boa sorte.

Criado 4 de dezembro de 2012
Ultima resposta 5 de dez. de 2012
Respostas 5
Participantes 3