Problemas com Conexao

6 respostas
J

Bom dia galera,

Estou com um problema com a conexao, onde eu utilizo ela perfeitamente para fazer todas as operações no banco em 2 classes, nas demais classes,
tenho sempre problema quando utilizo o .statement.executeUpdate(), dispara o seguinte erro:

Depurador interrompido em código-fonte não compilável.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at Cadastros.Cad_Servico.bt_salvarActionPerformed(Cad_Servico.java:168) at Cadastros.Cad_Servico.access$100(Cad_Servico.java:11) at Cadastros.Cad_Servico$2.actionPerformed(Cad_Servico.java:61) 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:6038) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5803) at java.awt.Container.processEvent(Container.java:2058) 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:168) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

andei lendo pode ser que não instanciei alguma coisa, só que ja to quebrando a cabeça, sei que pode ser coisa simples.. entao segue a baixo uma das classes com erro , e a minha classe conexao.

//Minha Classe
package Cadastros;

import java.sql.SQLException;
import javax.swing.*;
import utilitarios.Conexao;

/**
 *
 * @author Rodrigo
 */
public class Cad_Servico extends javax.swing.JFrame {

   Conexao cad_servico;

   public Cad_Servico() {
        initComponents();
        
        cp_codigo.setEditable(false);
        cp_nome.requestFocus();
        cad_servico= new Conexao();
        cad_servico.conecta();

    }

    
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        cp_codigo = new javax.swing.JTextField();
        cp_nome = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        bt_salvar = new javax.swing.JButton();
        bt_cancelar = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        cp_descricao = new javax.swing.JTextArea();
        jLabel4 = new javax.swing.JLabel();
        cp_valor = new javax.swing.JTextField();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        cp_codigo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cp_codigoActionPerformed(evt);
            }
        });

        jLabel1.setText("Código:");

        jLabel2.setText("Nome:");

        jLabel3.setText("Descricão:");

        bt_salvar.setText("Salvar");
        bt_salvar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_salvarActionPerformed(evt);
            }
        });

        bt_cancelar.setText("Cancelar");
        bt_cancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_cancelarActionPerformed(evt);
            }
        });

        cp_descricao.setColumns(20);
        cp_descricao.setRows(5);
        jScrollPane1.setViewportView(cp_descricao);

        jLabel4.setText("Valor:");

        cp_valor.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cp_valorActionPerformed(evt);
            }
        });

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane2.setViewportView(jTable1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel1)
                            .addComponent(jLabel2)
                            .addComponent(jLabel4))
                        .addGap(19, 19, 19)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                .addComponent(cp_nome, javax.swing.GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE)
                                .addComponent(cp_codigo, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addComponent(cp_valor, javax.swing.GroupLayout.PREFERRED_SIZE, 54, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addContainerGap())
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel3)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 440, Short.MAX_VALUE)
                        .addGap(85, 85, 85))))
            .addGroup(layout.createSequentialGroup()
                .addGap(50, 50, 50)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 452, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(87, Short.MAX_VALUE))
            .addGroup(layout.createSequentialGroup()
                .addGap(199, 199, 199)
                .addComponent(bt_salvar, javax.swing.GroupLayout.PREFERRED_SIZE, 63, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(bt_cancelar)
                .addContainerGap(246, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(cp_codigo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel1))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(cp_nome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(cp_valor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel3)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(36, 36, 36)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 115, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 20, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(bt_salvar)
                    .addComponent(bt_cancelar)))
        );

        pack();
    }// </editor-fold>                        

    private void bt_salvarActionPerformed(java.awt.event.ActionEvent evt) {                                          
        
        String Insert = "Insert Into Cad_Servico (nome, valor, descricao) values('"+cp_nome.getText()+"','"+cp_valor.getText()+"','"+cp_descricao.getText()+"')";

        try {

            cad_servico.statement.executeUpdate(Insert);


        } catch (SQLException erro) {
            JOptionPane.showMessageDialog(null,"Erro na Tentativa de Gravar o Registro"+erro);
        }



    }                                         

    private void bt_cancelarActionPerformed(java.awt.event.ActionEvent evt) {                                            
        cancelar();
    }                                                                                   

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Cad_Servico().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton bt_cancelar;
    private javax.swing.JButton bt_salvar;
    private javax.swing.JTextField cp_codigo;
    private javax.swing.JTextArea cp_descricao;
    private javax.swing.JTextField cp_nome;
    private javax.swing.JTextField cp_valor;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTable jTable1;
    // End of variables declaration                   


       public void cancelar(){


    int resposta = JOptionPane.showConfirmDialog(null, "Tem Certeza que Deseja Cancelar?", "Cancelar", JOptionPane.YES_NO_OPTION);

            if (resposta == JOptionPane.YES_OPTION) {

                    dispose();

    }
    }
}

// Classe Conexao

package utilitarios;
import java.sql.*;
import javax.swing.*;


public class Conexao{
final private String driver="sun.jdbc.odbc.JdbcOdbcDriver";
final private String url="jdbc:odbc:banco";
final private String usuario="";
final private String senha="";
private Connection conexao;
public Statement statement;
public ResultSet resultset;


public boolean conecta(){

boolean result = true;

try{

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

JOptionPane.showMessageDialog(null,"conectou");
}
catch (ClassNotFoundException Driver)
{
JOptionPane.showMessageDialog(null,"Driver não Localizado:"+Driver);
result = false;
}
catch(SQLException fonte)
{
JOptionPane.showMessageDialog(null,"Erro na conexão com o banco"+ fonte);
result = false;
}
return result;
}


public void desconecta(){

boolean result = true;

try
{
conexao.close();
JOptionPane.showMessageDialog(null,"Conexao Fechada");


}catch(SQLException erroSQL){

JOptionPane.showMessageDialog(null,"Não Foi Possivel Fechar a Conexão com o Banco"+erroSQL.getMessage());

result=false;
}
}
public void execulteSql(String sql)
{

try{
statement = conexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
resultset = statement.executeQuery(sql);

}
catch(SQLException sqlex){

JOptionPane.showMessageDialog(null,"Erro ao execultar comando SQL");

}

}
}

Estou usando o Access para testes, pq tive muitos problemas com o Firebird..

Já agradeço... Valew

6 Respostas

J

Desculpe ai galera, procurei procurei não tinha achado nada relacionado… agora achei um topico igual…

http://javafree.uol.com.br/topic-874087-Erro-inserir-dados.html

valew assim mesmo… tentar resolver la…

n deu :frowning:

francislon

Veja bem se vc está instanciando o Statement, observei seu código e percebi que ele não está sendo instaciado antes de vc chamar o método executeUpdate().

Só uma dica, a apostila FJ-21 da caelum tem um capitulo muito bom ensinando a trabalhar com JDBC. Eu aconselharia vc a ler este capitulo desta apostila antes de continuar :slight_smile:

J

Beleza cara, vou dar uma lida… valew

Eu só não entendo , porque funciona em umas classe e nas outras não… sendo que todas estao importando da classe conexao, iniciando um objeto da classe’conexao, e ainda chamando o metodo conecta()…

ai como no outro topico criei o metodo executeUpdate, como diz no outro topico e continua o erro, as que funcionam com o statement funciona com o metodo,nas que nao funciona com o statement não funciona com o metodo tambem :D,
então o erro está nas classes mesmo… não na classe Conexao… mas vou dar uma quebrada de cabeça e ler mais um pouco…

Valew

public int executeUpdate(String sql) { try { Statement stmt = conexao.createStatement(); int result = statement.executeUpdate(sql); stmt.close(); return result; } catch (SQLException ex) { ex.printStackTrace(); JOptionPane.showMessageDialog(null,"Erro: "+ex+"\n***********\n"+sql); return -1; } }

francislon

Pra você poder usar o método executeUpdate da classe Statement você deveria ter criado o objeto da classe Statement antes. Você só cria o objeto Statement no método executeSQL da classe Conexao. E pelo que eu vejo você não chama o método executeSQL.

J

Cara , era isso mesmo… funciou perfeitamente, ai recriei um metodo para o executeUpdade inicializandoo statement la dentro direitinho , e funcionou perfeitamente… agora to chamando o metodo executeUpdade que criei na classe Conexao…

\O/ valeww mano , brigadão mesmo

:thumbup:
e Desculpe o incomodo ahuaehuea

francislon

flw jovem…

Criado 1 de setembro de 2009
Ultima resposta 1 de set. de 2009
Respostas 6
Participantes 2