NullPointerException[RESOLVIDO]

9 respostas
yatta

Olá pessoal!!..

estou com um problemão e nao consigo resolver de jeito nenhum!!! esse bendito nullPointerException!!! ai vai meu codigo…

aqui é o Banco:

public boolean abreConnection() {
        boolean result = true;

        try {
            Class.forName("org.gjt.mm.mysql.Driver");
            db = DriverManager.getConnection("jdbc:mysql://127.0.0.1/vidros", "root", "");
            JOptionPane.showMessageDialog(null, "Conectou");

        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, "Não conectou " + e);
        } catch (ClassNotFoundException e) {
            JOptionPane.showMessageDialog(null, "driver nao encontrado " + e);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "base de dados nao encontrado " + e);
        }

        return result;
    }

aqui é o codigo que ta me dando dor de cabeça (hehehhehehehe):

try {
            con = new Conexao();
            con.abreConnection();

            String sqlInsert = ("INSERT INTO cad_clientes (nome, email, ddd_Fixo, tel_Fixo," +
                    "ddd_Cel, Cel, endereco, n, complemento, CEP, Cidade, Estado" +
                    "RG, CPF, Nacimento) values('" + text_Nome.getText() + "','" + text_Email.getText() + "','" + text_DDDFixo.getText() + "','" + text_TelFixo.getText() + "','" + text_DDDCel.getText() + "','" + text_Celular.getText() +
                    "','" + text_Endereco.getText() + "','" + text_N.getText() + "','" + text_Complemento.getText() + "','" + text_CEP.getText() +
                    "','" + text_Cidade.getText() + "','" + text_Estado.getText() + "','" + text_RG.getText() + "','" + text_CPF.getText() + "','" + text_Nascimento.getText() + "')");

            con.updateSQL(sqlInsert);
            JOptionPane.showMessageDialog(null, "Cadastro Realizado com Sucesso!", null, JOptionPane.INFORMATION_MESSAGE);

        }/*catch(SQLException e){
        JOptionPane.showMessageDialog(null,"Erro ao tentar gravar o registro! "+e);

        }*/ catch (Exception e) {
            throw new NullPointerException(""+e);
        }

se alguem puder me ajudar eu vou ficar muito agradecido!!!

9 Respostas

T

Tem como postar a mensagem de erro? Vendo o seu código pode ser que algum desses campos que vc está utilizando esteja retornando null, mas posta o erro ai que fica mais fácil.

yatta

ai está o erro que dá no console…

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: java.lang.NullPointerException
        at Cadastros.Clientes.botao_GravarActionPerformed(Clientes.java:365)
        at Cadastros.Clientes.access$200(Clientes.java:21)
        at Cadastros.Clientes$3.actionPerformed(Clientes.java:99)
        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:6263)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6028)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2475)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        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)
C

Verifiquei o código e realmet algum campo do formulário pode estar vindo nulo.

Tente usar o PreparedStatment, o código fica um pouco mais limpo.

Observe o exemplo que coloquei, cada interrogação representa uma posição da query que quer montar.

PreparedStatement pstmt = null;
           
           String sqlInsert = ("INSERT INTO cad_clientes (nome, email, ddd_Fixo, tel_Fixo," +
                   "ddd_Cel, Cel, endereco, n, complemento, CEP, Cidade, Estado" +
                   "RG, CPF, Nacimento) values(' ? ',' ? ',' ? ',' ?  ',' ? ','?','?',' ? ','" + text_Complemento.getText() + "','" + text_CEP.getText() +
                   "','" + text_Cidade.getText() + "','" + text_Estado.getText() + "','" + text_RG.getText() + "','" + text_CPF.getText() + "','" + text_Nascimento.getText() + "')");

          pstmt = con.prepareStatement(sqlInsert);
          pstmt.setString(1, text_Nome.getText());
          pstmt.setString(2, text_Email.getText());
          pstmt.setString(3, text_DDDFixo.getText());
          pstmt.setString(4, text_TelFixo.getText());
          pstmt.setString(5, text_DDDCel.getText());
          pstmt.setString(6, text_Celular.getText());
          pstmt.setString(8, text_Endereco.getText());
          pstmt.setString(9, text_N.getText());

          pstmt.executeUpdate();
yatta
carlosbarbero:
Verifiquei o código e realmet algum campo do formulário pode estar vindo nulo.

Tente usar o PreparedStatment, o código fica um pouco mais limpo.

Observe o exemplo que coloquei, cada interrogação representa uma posição da query que quer montar.

PreparedStatement pstmt = null;
           
           String sqlInsert = ("INSERT INTO cad_clientes (nome, email, ddd_Fixo, tel_Fixo," +
                   "ddd_Cel, Cel, endereco, n, complemento, CEP, Cidade, Estado" +
                   "RG, CPF, Nacimento) values(' ? ',' ? ',' ? ',' ?  ',' ? ','?','?',' ? ','" + text_Complemento.getText() + "','" + text_CEP.getText() +
                   "','" + text_Cidade.getText() + "','" + text_Estado.getText() + "','" + text_RG.getText() + "','" + text_CPF.getText() + "','" + text_Nascimento.getText() + "')");

          pstmt = con.prepareStatement(sqlInsert);
          pstmt.setString(1, text_Nome.getText());
          pstmt.setString(2, text_Email.getText());
          pstmt.setString(3, text_DDDFixo.getText());
          pstmt.setString(4, text_TelFixo.getText());
          pstmt.setString(5, text_DDDCel.getText());
          pstmt.setString(6, text_Celular.getText());
          pstmt.setString(8, text_Endereco.getText());
          pstmt.setString(9, text_N.getText());

          pstmt.executeUpdate();

Eu usei este PreparedStatement.... só que está pedindo pra criar um metodo na Classe do Banco de dados.....

Tiburcio_Mancha

como está seu código fica realmente difícil…como o amigo de cima disse, o PreparedStatement deixa seu código muito mais limpo, sem precisar destas concatenações loucas ae…

então, sugiro primeir vc limpar seu código e a seguir debugar se o erro continuar.

falow!!!

lina

Oi,

O erro apresentado está na linha 365 da classe Clientes.java.

Post ela aqui.

Tchauzin!

yatta

lina:
Oi,

O erro apresentado está na linha 365 da classe Clientes.java.

Post ela aqui.

Tchauzin!

desculpe a demora para responder…

a linha 365 esta assim:

catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
        }

só que eu acho que o problema não está ai…

vlws

lina

Oi,

Então… o problema pode estar quando um values do insert está null.

Se o valor de algum campo estiver null você não poderá atribuir aspas simples ‘null’ pra ele!

Você terá que fazer assim:

String sqlInsert = "insert into Cad_Clientes" +" (" +" nome," +" email," +" ddd_fixo" +" tel_fixo" +" ddd_cel," +" Cel," +" endereco," +" n," +" complemento," +" cep," +" cidade," +" estado," +" RG," +" CEP," +" Nacimento" +" )" +" values" +" (" +" "+(text_Nome.getText() != null ? ("'"+text_Nome.getText()+"',") : "null,") +" "+(text_Email.getText() != null ? ("'"+text_Email.getText()+"',") : "null,") +" "+(text_DDDFixo.getText() != null ? ("'"+text_DDDFixo.getText()+"',") : "null,") +" "+(text_TelFixo.getText() != null ? ("'"+text_TelFixo.getText()+"',") : "null,");

Para todos os seus campos! esse é o problema de não utilizar PreparedStatament.

Tchauzin!

yatta

o problema estava ná falta de uma bendita virgula… entre o Etado e o RG…

String sqlInsert = ("INSERT INTO cad_clientes (nome, email, ddd_Fixo, tel_Fixo," +   
                  "ddd_Cel, Cel, endereco, n, complemento, CEP, Cidade, Estado" +   
                  "RG, CPF, Nacimento)

agora está tudo funcionando!!!

muito obrigado pela ajuda pessoal!!!

Criado 17 de setembro de 2009
Ultima resposta 22 de set. de 2009
Respostas 9
Participantes 5