Problemas com executeUpdate

4 respostas
K
Bom dia pessoal, sou novato tbm na area de desenvolvimento em java Estou com um problema que  não sei como solucionar.

Utilizo a IDE netbeans, onde separei meu código da seguinte forma:

package classes;

import java.sql.<em>;

import javax.swing.</em>;

/**

*
  • @author Bruno
    */
    public class ConexaoBD {
    private String driver = “org.postgresql.Driver”;
    private String url = “jdbc:postgresql://localhost:5432/postgres”;
    private String usuario = “postgres”;
    private String senha = “xatm092”;
    private Connection conexao;
    public Statement stmt;
    public ResultSet rs;
    //conexao = null;
/** Creates a new instance of ConexaoBD */

public ConexaoBD() {

try {
Class.forName(driver);

conexao = DriverManager.getConnection(url, usuario, senha);

JOptionPane.showMessageDialog(null,Conexão Realizada.);

}

catch(ClassNotFoundException Driver){

// retorna se houve erro na class.forName

JOptionPane.showMessageDialog(null,"Driver não localizado: "+Driver);
}

catch(SQLException erro){

// retorna se houve erro no na conexao sql

JOptionPane.showMessageDialog(null,"Deu erro na conexão "+"com a fonte de dados: "+erro);
} catch(Exception ex)

{

JOptionPane.showMessageDialog(null,""+ex);
}

}

public void conecta(){

}

public void desconecta(){

try{

conexao.close();

JOptionPane.showMessageDialog(null,“conexão fechada”);

}
catch(SQLException erro){

JOptionPane.showMessageDialog(null,"Conexao não pode ser encerrada, erro: "+erro);
}

}

public void executeSQL(String sql)

{

// cria se uma statement da conexao onde é utilizada para executar a query retornando os valores para o objeto rs.

try

{

stmt = conexao.createStatement();

rs = stmt.executeQuery(sql);

}

catch(SQLException erro)

{

JOptionPane.showMessageDialog(null,“Não foi possível executar o comando sql.”+erro);

}

}

}

Está seria a minha classe de conexão com o banco e o código a seguir seria o do evento de inserção dos dados no banco.

private void but_Usu_SairActionPerformed(java.awt.event.ActionEvent evt) {

ConexaoBD con = new ConexaoBD();

<a href="//con.conecta">//con.conecta</a>();

try{

con.stmt.executeUpdate(“insert into usuario (nome, sobrenome, telefone, cargo, senha)” +

" values (‘ricardo’, ‘vieira’, 38326720, ‘conferente’, ‘ric’)");

JOptionPane.showMessageDialog(null,“Dados inseridos com sucesso”);

}

catch(SQLException erro){

JOptionPane.showMessageDialog(null,“erro no update”+erro);

}

con.desconecta();
}

Este código está me retornando o seguinte erro:

Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException

at Interfaces.Cad_Usuarios.but_Usu_SairActionPerformed(Cad_Usuarios.java:185)

at Interfaces.Cad_Usuarios.access$100(Cad_Usuarios.java:17)

at Interfaces.Cad_Usuarios$2.actionPerformed(Cad_Usuarios.java:87)

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

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:231

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:603

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

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

at java.awt.Container.processEvent(Container.java:205

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

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

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

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

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

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

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

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

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

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

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

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

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

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:16

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

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

Já procurei saber sobre este erro, pois este somente acontece quando estamos passando um objeto nulo à um metódo, creio eu então que esta instrução de sql esteja errada, porem este comando sql foi executado no banco, e assim sendo resultou em sucesso.

Agradeço a voçes a atenção…

4 Respostas

wbdsjunior

o atributo stmt está nulo, ou seja, não foi instanciado em nenhum lugar.

outra coisa: o método conecta() está vazio. o que ele deveria fazer? instanciar o atributo stmt talvez?

K

Este método conecta era utilizado para conectar primeiramente, porém estava com problema também, passei todo o meu código aonde é efetuada a conexão para o construtor.
E no meu código do evento do botão eu criei um objeto da minha classe conexaoBD, onde passei a sql para minha stmt?
creio eu que esta não estaria nula. Me corrija se estiver errado. Como eu poderia solucionar este problema?

wbdsjunior

é aqui que a NullPointerException acontece:

con.stmt.executeUpdate("insert into usuario (nome, sobrenome, telefone, cargo, senha)" + " values ('ricardo', 'vieira', 38326720, 'conferente', 'ric')");
aqui você faz referência a um atributo público da classe ConexaoBD que não foi instanciado nela ou, ao que parece, na classe que possui o método but_Usu_SairActionPerformed(java.awt.event.ActionEvent evt).

tente o seguinte:

con.stmt = con.createStatment(); con.stmt.executeUpdate("insert into usuario (nome, sobrenome, telefone, cargo, senha)" + " values ('ricardo', 'vieira', 38326720, 'conferente', 'ric')"); con.stmt.close();
ou então utilizar aquele método executeSQL(String sql) da classe ConexaoBD.

K

Vlw, foi na mosca essa…
Brigadão

Criado 8 de setembro de 2009
Ultima resposta 9 de set. de 2009
Respostas 4
Participantes 2