Erro ao salvar no mysql

9 respostas
G

Boa tarde amigos.
Sou iniciante em Java e estou com um problema na hora de gravar dados no mysql.
Se alguem puder me dar uma luz agradeço.
Segue abaixo o código e os erros:

Classe Conexão

package br.com.Utilitarios;
import java.sql.*;
import javax.swing.*;

public class conexao
{
    final private String driver = "com.mysql.jdbc.Driver";
    final private String url = "jdbc:mysql://localhost/sgpa";
    final private String usuario = "root";
    final private String senha = "";

    public Connection conexao;
    public Statement statement;
    public ResultSet resultset;


    public boolean conecta()
    {
        boolean result = true;

        try
        {
            Class.forName(driver);
            conexao = DriverManager.getConnection(url, usuario, senha);
         
            
        }catch(ClassNotFoundException Driver)
        {
            JOptionPane.showMessageDialog(null, "Driver não localizado: " + Driver);
            return false;

        }catch(SQLException Fonte)
        {
            JOptionPane.showMessageDialog(null, "Erro na Conexão: " + Fonte);
            return false;
        }
        return result;
    }

    public void desconecta()
    {
        boolean result = true;
        try
        {
            conexao.close();
            JOptionPane.showMessageDialog(null, "Deconectado do banco de dados!");

        }catch(SQLException erro)
        {
            JOptionPane.showMessageDialog(null, "Erro ao Desconectar do Banco de dados: " + erro);
            result =  false;
        }
    }

    public void executeSQL(String sql)
    {
        try
        {
            statement = conexao.createStatement(resultset.TYPE_SCROLL_SENSITIVE, resultset.CONCUR_READ_ONLY);
            resultset = statement.executeQuery(sql);
        }catch(SQLException sqlex)
        {

            JOptionPane.showMessageDialog(null, "Não foi possivel executar a SQL, erro: " + sqlex + " , SQL:" + sql);
        }
     }
}

Botão de Cadastro

private void btSalvarActionPerformed(java.awt.event.ActionEvent evt) {
        // Salva registro
        conexao con_func;
        con_func = new conexao();
        con_func.conecta();
        try {
            //String sql_insert = "insert into funcionarios (id_nome,nome,sobrenome,cpf,rg,telefone,dia_admissao,mes_admissao,ano_admissao,salario) values ('','" + jtNome.getText() + "','" + jtSobrenome.getText() + "','" + jtCPF.getText() + "','" + jtRG.getText() + "','" + jtTELEFONE.getText() + "','" + jtDia.getText() + "','" + jtMes.getText() + "','" + jtAno.getText() + "','" + jtSalario.getText() +  "')";
            String sql = "insert into teste(nome) values('teste')";

            con_func.statement.executeUpdate(sql);
            JOptionPane.showMessageDialog(null, "Registro salvo com sucesso!");

        }catch(SQLException erro) {
            erro.printStackTrace();
            JOptionPane.showMessageDialog(null, "Não foi possivel salvar o registro. Entre em contato com o administrador do programa!");
        }
    }

Relatório de Erros

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at cadastros.cad_bairro.jButtonBairroSalvarActionPerformed(cad_bairro.java:120)
at cadastros.cad_bairro.access$100(cad_bairro.java:22)
at cadastros.cad_bairro$2.actionPerformed(cad_bairro.java:74)
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.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:6134)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5899)
at java.awt.Container.processEvent(Container.java:2023)
at java.awt.Component.dispatchEventImpl(Component.java:4501)
at java.awt.Container.dispatchEventImpl(Container.java:2081)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895)
at java.awt.Container.dispatchEventImpl(Container.java:2067)
at java.awt.Window.dispatchEventImpl(Window.java:2458)
at java.awt.Component.dispatchEvent(Component.java:4331)
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)

9 Respostas

ssh

cara, se não me engano, você deveria usar o comando .executeQuery(String sql);

executeUpdate é p/ o comando update do sql. pode ser isso.

Jonhkr
tem algo errado em uma dessas linhas se voce puder postar aii

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

at cadastros.cad_bairro.jButtonBairroSalvarActionPerformed(cad_bairro.java:120)

at cadastros.cad_bairro.access$100(cad_bairro.java:22)

at cadastros.cad_bairro$2.actionPerformed(cad_bairro.java:74)

ja tentou debugar???

G

Já tentei usar o executeQuery e debugar mas deu o mesmo erro.

drsmachado

Camarada, teu código tá muito esquisito.
De qualquer forma, o stackTrace diz que o erro ocorre na linha 120 da classe cad_bairro.
Posta o trecho em que essa linha se encontra

G

Fiz uma pequena confusão com o Stactkrace, mandei um outro que estava testando:
Segue o correto da Classe CadFuncionarios:

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

at br.com.Funcionarios.CadFuncionarios.btSalvarActionPerformed(CadFuncionarios.java:234)

at br.com.Funcionarios.CadFuncionarios.access$000(CadFuncionarios.java:22)

at br.com.Funcionarios.CadFuncionarios$1.actionPerformed(CadFuncionarios.java:109)

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:6134)

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

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

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

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

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

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

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

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

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

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

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

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

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)

CONSTRUÍDO COM SUCESSO (tempo total: 16 segundos)

As três primeiras linhas dos erros:

linha 234

con_func.statement.executeQuery(sql);

linha 22

public class CadFuncionarios extends javax.swing.JFrame {

linha 109:

btSalvarActionPerformed(evt);
drsmachado

Provável que teu statement esteja nulo.

G

Desculpe mas ainda sou meio leigo.
Como faço para confirmar se meu statement esta reamente nulo.
E como resolvo este problema?
Grato.

drsmachado

Primeiramente, vc mistura as responsabilidades de cada classe, na tua interface ou camada view tem código SQL o que é errado.
Segundo, você tem um método executeSQL que deveria receber a String com o comando, mas não invoca ele em nenhum momento.

E quando você chama

con_func.statement.executeQuery(sql);

teu Statement statement é nulo, afinal, você não o instanciou, apenas o declarou.

Se quiser testar, faça um if

if(con_func.statement == null){
  JOptionPane.showMessage(null, "Este statement não funciona, prefira o PreparedStatement");
}
G

Era isso mesmo drsmachado.
O meu statement estava nulo.

Vou tentar usar o PreparedStatement.

Obrigado pela ajuda.

Criado 9 de outubro de 2011
Ultima resposta 9 de out. de 2011
Respostas 9
Participantes 4