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)
Erro na hora de inserir os dados na tabela
15 Respostas
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
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 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());
}
}
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)