Erro na hora de inserir os dados na tabela

Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at br.com.formularios1.conector.execute(conector.java:41)
at br.com.formularios1.CadastrarLivros.CadastrarLivros_botao_salvarActionPerformed(CadastrarLivros.java:266)
at br.com.formularios1.CadastrarLivros.access$500(CadastrarLivros.java:10)
at br.com.formularios1.CadastrarLivros$6.actionPerformed(CadastrarLivros.java:119)
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:2478)
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)

Verifique qual das variáveis da linha 41 da classe conector.java não foi inicializada. E não poste títulos usando SOMENTE LETRAS MAIÚSCULAS.

Esse conector que estou usando:

package br.com.formularios1;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class conector {


public void open(){
   try{
       Class.forName("org.gjt.mm.mysql.Driver");
    con = DriverManager.getConnection(url,user,pass);
    stmt = con.createStatement();
} catch(ClassNotFoundException ex){
    System.out.println(ex.getMessage());
    }catch(SQLException ex){
         System.out.println(ex.getMessage());
    }
    System.out.println("ABERTO");
}

    public void close(){
        try{
            stmt.close();
            con.close();
        } catch(SQLException ex){
            System.out.println(ex.getMessage());
    }
         System.out.println("Conexão Fechada");

    }
public void execute (String query)  {
    try{
        if( stmt.executeUpdate(query) != Statement.EXECUTE_FAILED){
            System.out.println("Registro inserido com sucesso");
        }
        
    } catch (SQLException ex){
        System.out.println(ex.getMessage());
    }
    
}

    private final String url = "jdbc:mysql://localhost:3306/teste";
    private final String user = "root";
    private final String pass = "";

    Connection con;

    Statement stmt;
    }

posso não ser um gênio, mas desde que o erro foi gerado, você modificou a classe certo ?

isso vai dificultar sabermos o que houve se você puder passar o arquivo original, ou o completo vai ajudar, já que a linha 41 não tem nada a ver com o que foi descrito no erro

Esse erro diz o seguinte, “Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException” primeiro ele diz em que Thread ocorreu o erro, depois ele mostra o tipo do erro (a classe dele) no caso é um “NullPointerException”, até onde sei esse erro ocorre quando você tenta executar uma operação em uma variável que não foi setado o seu valor

tipo se você tentar trabalhar com um objeto que não foi instanciado ainda, significa que o valor dele é null.

então eu te aconselho a procurar algum lugar no seu código onde possa ocorre algo desse tipo, as vesses isso pode ocorre por causa da saída do scopo tipo você cria a variável fora de um IF, mas atribute o valor dentro dele, se esse IF não for executado a variável nunca será inicializada.

Não lembro muito bem de tudo, mas espero ter ajudado

To lascado, tentando corrigir aqui ai apaguei a classe , to criando ela de novo aqui, e daqui a pouco de peço ajuda, blz[/url]? rsrs

tranquilo quando tiver esse tipo de problema não poste só o erro, ele sozinho não serve muito, mas junto do código que originou ele ai já muda

Está é minha conexão :


package br.com.formularios1;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class conector {


public void open(){
   try{
       Class.forName("org.gjt.mm.mysql.Driver");
    con = DriverManager.getConnection(url,user,pass);
    stmt = con.createStatement();
} catch(ClassNotFoundException ex){
    System.out.println(ex.getMessage());
    }catch(SQLException ex){
         System.out.println(ex.getMessage());
    }
    System.out.println("ABERTO");
}

public void execute (String query)  {
    try{
        if( stmt.executeUpdate(query) != Statement.EXECUTE_FAILED){
            System.out.println("Registro inserido com sucesso");
        }
        
    } catch (SQLException ex){
        System.out.println(ex.getMessage());
    }
    
}

    public void close(){
        try{
            stmt.close();
            con.close();
        } catch(SQLException ex){
            System.out.println(ex.getMessage());
    }
         System.out.println("Conexão Fechada");

    }

    private final String url = "jdbc:mysql://localhost:3306/teste";
    private final String user = "root";
    private final String pass = "";

    Connection con;

    Statement stmt;
    }

Está é a tela de Cadastro de Livros que tento cadastrar para inserir no banco de dados.



package br.com.formularios1;

public class CadastrarLivros extends javax.swing.JFrame {
conector c;
    public CadastrarLivros() {
        initComponents();
        c = new conector();
        c.open();
    }
    private void CadastrarLivros_botao_CadastrarActionPerformed(java.awt.event.ActionEvent evt) {

        CadastrarLivros_Titulo_texto.setEnabled(true);
        CadastrarLivros_Autor_texto.setEnabled(true);
        CadastrarLivros_Editora_texto.setEnabled(true);
        CadastrarLivros_AnodePublicacao_texto.setEnabled(true);
        CadastrarLivros_Edicao_texto.setEnabled(true);
    }

    private void CadastarLivro_AlterarActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
}

    private void CadastrarLivros_botao_finalizarActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:

        String Titulo= CadastrarLivros_Titulo_texto.getText();
        String Autor = CadastrarLivros_Autor_texto.getText();
        String Editora =  CadastrarLivros_Editora_texto.getText();
        String Ano_de_Publicacao= CadastrarLivros_AnodePublicacao_texto.getText();
        String Edicao = CadastrarLivros_Edicao_texto.getText();
        String query = "INSERT INTO `books` (Titulo,Autor, Editora,Ano_de_Publicacao,Edicao)VALUES";

        query += "('"+Titulo+"','"+Autor+"','"+Editora+"','"+Ano_de_Publicacao+"','"+Edicao+"')";
        //System.out.println(query);
        c.execute(query);
       
}

ai está dando este erro :


Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at br.com.formularios1.conector.execute(conector.java:27)
        at br.com.formularios1.CadastrarLivros.CadastrarLivros_botao_finalizarActionPerformed(CadastrarLivros.java:262)
        at br.com.formularios1.CadastrarLivros.access$200(CadastrarLivros.java:18)
        at br.com.formularios1.CadastrarLivros$3.actionPerformed(CadastrarLivros.java:83)
        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:2478)
        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)

OK segura aew vou ver o que posso fazer

da uma olhada quando você executa o método open() do seu connector ele por acaso entre em alguma de suas exception ?

também vai uma dica um statemente está estritamente relacionado com uma pesquisa no banco, significa que cada query (inserção/update/delete/pesquisa) deve ter seu statemente para ele pelo menos é a forma que eu faço ou seja crie um statemente para cada query e não use um para todas as querys.

alem do mais vá na sua classe conctor na linha 27 e me copie o que tem nela, espero que você não tenha mexido no arquivo ainda.

conector completo


package br.com.formularios1;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class conector {


public void open(){
   try{
       Class.forName("org.gjt.mm.mysql.Driver");
    con = DriverManager.getConnection(url,user,pass);
    stmt = con.createStatement();
} catch(ClassNotFoundException ex){
    System.out.println(ex.getMessage());
    }catch(SQLException ex){
         System.out.println(ex.getMessage());
    }
    System.out.println("ABERTO");
}

public void execute (String query)  {
    try{
        if( stmt.executeUpdate(query) != Statement.EXECUTE_FAILED){
            System.out.println("Registro inserido com sucesso");
        }
        
    } catch (SQLException ex){
        System.out.println(ex.getMessage());
    }
    
}

    public void close(){
        try{
            stmt.close();
            con.close();
        } catch(SQLException ex){
            System.out.println(ex.getMessage());
    }
         System.out.println("Conexão Fechada");

    }

    private final String url = "jdbc:mysql://localhost:3306/teste";
    private final String user = "root";
    private final String pass = "";

    Connection con;

    Statement stmt;
    }

outra dica o java posse duas saidas padrão determinadas System.out e System.err se você for mostra um erro na tela recomendo que você use o System.err e não o out

se você for fazer um projeto grande te recomendo que você use a biblioteca log4j ao inves de imprimir seus erros assim

blz cara vc me deu o conector completo mas de uma olhada no erro

at br.com.formularios1.conector.execute(conector.java:27) ele está dizendo que na linha 27 deu algo errado, e aqui a linha 27 para min é System.out.println("Registro inserido com sucesso"); ou seja não é essa linha que deu o erro que ele está mostrando por isso peço que vá no seu projeto e pegue a linha 27 que você ver lá

Poderia te mostrar pelo teamviewer, pode ser?

faz um favor troque esse código aqui do seu connector para esse asski

[code]public void execute (String query) {
try{
if( stmt.executeUpdate(query) != Statement.EXECUTE_FAILED){
System.out.println(“Registro inserido com sucesso”);
}

} catch (SQLException ex){  
    System.out.println(ex.getMessage());  
}  

} [/code]

[code]public void execute (String query) {
try{
System.out.println(stmt);
if( stmt.executeUpdate(query) != Statement.EXECUTE_FAILED){
System.out.println(“Registro inserido com sucesso”);
}

} catch (SQLException ex){  
    System.out.println(ex.getMessage());  
}  

} [/code]

e me diga o que acontece

o erro só mudou, de linha:


null
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at br.com.formularios1.conector.execute(conector.java:28)
        at br.com.formularios1.CadastrarLivros.CadastrarLivros_botao_finalizarActionPerformed(CadastrarLivros.java:243)
        at br.com.formularios1.CadastrarLivros.access$200(CadastrarLivros.java:4)
        at br.com.formularios1.CadastrarLivros$3.actionPerformed(CadastrarLivros.java:64)
        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:2478)
        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)