Problemas com java.lang.NullPointerException - HELP ME!

descobri onde esta o erro, porem nao sei como resolver, o erro ocorre quando executa os comandos do banco de dados…

pessoal essa é minha classe DAOCLiente, onde eu guardo tudo referente ao cliente em questão de conexao

view plaincopy to clipboardprint?

1. package DAO; 2. 3. import ValoresObjetos.Cliente; 4. import Interfaces.IBancoDados; 5. import Principal.BancoDados; 6. import ValoresObjetos.Cliente; 7. 8. import java.sql.Connection; 9. import java.sql.DriverManager; 10. import java.sql.PreparedStatement; 11. import java.sql.ResultSet; 12. import java.sql.SQLException; 13. import java.sql.Statement; 14. import java.util.ArrayList; 15. import java.util.List; 16. import java.util.Vector; 17. import java.util.logging.Level; 18. import java.util.logging.Logger; 19. import javax.swing.JOptionPane; 20. 21. 22. public class DAOCliente { 23. 24. private String driver; 25. private String url; 26. private String usuario; 27. private String senha; 28. 29. private Connection con; 30. private Statement stmt; 31. private String conDriver, urlString, qry, mensagem; 32. private ResultSet resultset; 33. 34. IBancoDados bancoDados;// = new BancoDados();; 35. 36. private BancoDados conexao; 37. 38. public DAOCliente() { 39. this.driver = IBancoDados.driver; 40. this.url = IBancoDados.url; 41. this.usuario = IBancoDados.usuario; 42. this.senha = IBancoDados.senha; 43. } 44. 45. public void conectarBD( ) throws Exception{ 46. conexao = BancoDados.getInstancia(); 47. conexao.conectar(); 48. } 49. public void desconectarBD( ) throws Exception{ 50. conexao.desconectar(); 51. } 52. 53. public void executeSQL(String sql){ 54. try{ 55. stmt = con.createStatement(); 56. //ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); 57. resultset = stmt.executeQuery(sql); 58. //JOptionPane.showMessageDialog(null,"SQL executada com sucesso"); 59. 60. } 61. catch(SQLException sqlex){ 62. JOptionPane.showMessageDialog(null,"Não foi possível "+ 63. "executar o comando sql,"+sqlex+", o sql passado foi "+sql); 64. } 65. } 66. 67. public ArrayList<Cliente> getTodosClientes(){ 68. 69. ArrayList<Cliente> listaCliente = new ArrayList<Cliente>(); 70. 71. try{ 72. 73. PreparedStatement comando = conexao.getConexao().prepareStatement("SELECT * FROM CLIENTE ORDER BY CLI_NOME"); 74. ResultSet rs = comando.executeQuery(); 75. 76. while (rs.next()){ 77. 78. Cliente c = new Cliente(); 79. 80. c.setIdCliente(rs.getInt("CLI_ID")); 81. c.setNome(rs.getString("CLI_NOME")); 82. c.setEndereco(rs.getString("CLI_ENDERECO")); 83. c.setBairro(rs.getString("CLI_BAIRRO")); 84. c.setCidade(rs.getString("CLI_CIDADE")); 85. c.setUF(rs.getString("CLI_UF")); 86. c.setTelefone(rs.getString("CLI_FONE")); 87. c.setCelular(rs.getString("CLI_CEL")); 88. c.setCPF(rs.getInt("CLI_CPF")); 89. listaCliente.add(c); 90. } 91. } catch (Exception ex) { 92. System.err.println("Erro inesperado \n\n"+ex.toString( )); 93. } 94. return listaCliente; 95. } 96. }

esse aqui é minha classe TelaCliente, onde fica os jlabels, jtextfields… mais precisamente no evento onclick do botão salvar…

view plaincopy to clipboardprint?

1. private void jButton_SalvarActionPerformed(java.awt.event.ActionEvent evt) { 2. 3. String sqlinsert ="insert into cliente " + 4. "(CLI_NOME,CLI_ENDERECO,CLI_BAIRRO, CLI_CIDADE,CLI_UF," + 5. "CLI_FONE,CLI_CEL,CLI_CPF) values ('" + 6. jTextField_Nome.getText()+"','"+ 7. jTextField_Endereco.getText()+"','"+ 8. jTextField_Bairro.getText()+"','"+ 9. jTextField_Cidade.getText()+"','"+ 10. jTextField_UF.getText()+"','"+ 11. jTextField_Telefone.getText()+"','"+ 12. jTextField_Celular.getText()+"','"+ 13. jTextField_CPF.getText()+"')"; 14. 15. 16. DAOCliente.executeSQL(sqlinsert); 17. 18. 19. }

o erro q da referencia a linha 55 da classe DAOCLiente NO Metodo ExecutaSql q é quando faz a execução no banco…

nao consigo descobrir pq esta dando erro nesse comando…

view plaincopy to clipboardprint?

1. Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 2. at DAO.DAOCliente.executeSQL(DAOCliente.java:55) 3. at Tela.TelaCliente.jButton_SalvarActionPerformed(TelaCliente.java:350) 4. at Tela.TelaCliente.access$200(TelaCliente.java:19) 5. at Tela.TelaCliente$3.actionPerformed(TelaCliente.java:214) 6. at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) 7. at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) 8. at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 9. at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 10. at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) 11. at java.awt.Component.processMouseEvent(Component.java:6041) 12. at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) 13. at java.awt.Component.processEvent(Component.java:5806) 14. at java.awt.Container.processEvent(Container.java:2058) 15. at java.awt.Component.dispatchEventImpl(Component.java:4413) 16. at java.awt.Container.dispatchEventImpl(Container.java:2116) 17. at java.awt.Component.dispatchEvent(Component.java:4243) 18. at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322) 19. at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986) 20. at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916) 21. at java.awt.Container.dispatchEventImpl(Container.java:2102) 22. at java.awt.Window.dispatchEventImpl(Window.java:2440) 23. at java.awt.Component.dispatchEvent(Component.java:4243) 24. at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) 25. at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273) 26. at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) 27. at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) 28. at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168) 29. at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) 30. at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

Onde você obtem a conexao?
con realmente é null…
ONde você instanciou a classe DAOCliente???

equinhone,

você nao instancializou o atributo con !

Tente trocar na linha 55 :

stmt = conexao.getConexao().createStatement();

tá confuso seu codigo amigo…

o atributo con serve para que ?

as variáveis “con” e “stmt” não foram inicializadas,
na execuçaõ do método “executeSQL”

Con é uam vriavel do tipo Conection e a outra é o Stantment

sou um pouco leigo… estou um pouco perdio… mas acho q estou entendendo… na verdade nao entendo pra que serve o stentment…

agradeço a ajuda

[quote=Reilander]as variáveis “con” e “stmt” não foram inicializadas,
na execuçaõ do método “executeSQL”[/quote]

Caro colega, ja resolvi parte do problema, ele agora esta gravando no banco, mas retorna o seguinte erro

“sql.java.sql.SQLException : No ResultSet was produced”

A função q executa a sql no banco ficou assim:

[code]public void executeSQL(String sql){

    try{
        //PreparedStatement comando = conexao.getConexao().prepareStatement(sql);
        //ResultSet rs = comando.executeQuery();
        
            
            statement = conexao.getConexao().createStatement();
            statement.executeQuery(sql);
            //ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
            //rs = stmt.executeQuery(sql);
            
            //JOptionPane.showMessageDialog(null,"SQL executada com sucesso");
            
        }
        catch(SQLException sqlex){
           JOptionPane.showMessageDialog(null,"Não foi possível "+
                   "executar o comando sql," +sqlex+ ", o sql passado foi "+sql);
        }
        catch (Exception ex) {
        Logger.getLogger(DAOCliente.class.getName()).log(Level.SEVERE, null, ex);
        }
   }[/code]

Agradeço a ajuda…

alguem pode me dizer pq da esse erro e ainda sim, grava na tabela certinho ???.. mas emite a msg…

1º - coloca o stacktrace…
2º - o sql que vc está passando para seu método é uma produced? se for o tratamento é diferente de um statement ou prepareStatement…

14/04/2008 17:22:08 DAO.DAOCliente executeSQL SEVERE: null java.sql.SQLException: No ResultSet was produced at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:259) at DAO.DAOCliente.executeSQL(DAOCliente.java:64) at Tela.TelaCliente.jButton_SalvarActionPerformed(TelaCliente.java:350) at Tela.TelaCliente.access$200(TelaCliente.java:20) at Tela.TelaCliente$3.actionPerformed(TelaCliente.java:217) 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:6041) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5806) at java.awt.Container.processEvent(Container.java:2058) at java.awt.Component.dispatchEventImpl(Component.java:4413) at java.awt.Container.dispatchEventImpl(Container.java:2116) at java.awt.Component.dispatchEvent(Component.java:4243) 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:2440) at java.awt.Component.dispatchEvent(Component.java:4243) 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)

package DAO;

import ValoresObjetos.Cliente;
import Interfaces.IBancoDados;
import Principal.BancoDados;
import ValoresObjetos.Cliente;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;


public class DAOCliente {
    
    private String driver;
    private String url;
    private String usuario;
    private String senha;

    public Connection con;    
    private String conDriver, urlString, qry, mensagem;
    public Statement statement;
    public ResultSet resultset;
  
    IBancoDados bancoDados;// = new BancoDados();;

    private BancoDados conexao;
    BancoDados teste = new BancoDados();

    public DAOCliente() {
           this.driver = IBancoDados.driver;
           this.url = IBancoDados.url;
           this.usuario = IBancoDados.usuario;
           this.senha = IBancoDados.senha;
           
           
    }
    
    public void conectarBD( ) throws Exception{
        conexao = BancoDados.getInstancia();
        conexao.conecta();
    }
    public void desconectarBD( ) throws Exception{
        conexao.desconecta();
    }
    
    public void executeSQL(String sql){
        
        try{
            //PreparedStatement comando = conexao.getConexao().prepareStatement(sql);
            //ResultSet rs = comando.executeQuery();
            
                
                statement = conexao.getConexao().createStatement();
                resultset = statement.executeQuery(sql);
                
                //ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
                //rs = stmt.executeQuery(sql);
                
                //JOptionPane.showMessageDialog(null,"SQL executada com sucesso");
                
            }
            
            catch (Exception ex) {
            Logger.getLogger(DAOCliente.class.getName()).log(Level.SEVERE, null, ex);
            }
       }
    
    public ArrayList<Cliente>  getTodosClientes(){
        
        ArrayList<Cliente> listaCliente = new ArrayList<Cliente>();
        
         try{
            
             PreparedStatement comando = conexao.getConexao().prepareStatement("SELECT * FROM CLIENTE ORDER BY CLI_ID");
             ResultSet rs = comando.executeQuery();

            while (rs.next()){
                
                Cliente c = new Cliente();
                
                c.setIdCliente(rs.getInt("CLI_ID"));                
                c.setNome(rs.getString("CLI_NOME"));
                c.setEndereco(rs.getString("CLI_ENDERECO"));
                c.setBairro(rs.getString("CLI_BAIRRO"));
                c.setCidade(rs.getString("CLI_CIDADE"));
                c.setUF(rs.getString("CLI_UF"));
                c.setTelefone(rs.getString("CLI_FONE"));
                c.setCelular(rs.getString("CLI_CEL"));
                c.setCPF(rs.getInt("CLI_CPF"));
                listaCliente.add(c);
            }  
        } catch (Exception ex) {
            System.err.println("Erro inesperado \n\n"+ex.toString( ));
        }
        return listaCliente;
    }
    
   /* public static void main(String args[]){
        
        BancoDados BancoDados = new BancoDados();
        BancoDados.conecta();
        
       
        
        String sql = "insert into cliente (CLI_NOME,CLI_ENDERECO,CLI_BAIRRO, CLI_CIDADE,CLI_UF,CLI_FONE,CLI_CEL,CLI_CPF) "+
                     "values ('Eduardo Quinhone','Rua G 05','Parque Cuiaba','Cuiaba','MT','65 3666-3328','65 9955-4918','00153114142')";
        
        DAOCliente DAOCliente = new DAOCliente();
        DAOCliente.executeSQL(sql);
        
        
        
    }*/
}

[quote]
private void jButton_SalvarActionPerformed(java.awt.event.ActionEvent evt) {
try {

        String sqlinsert ="insert into cliente " +
        "(CLI_NOME,CLI_ENDERECO,CLI_BAIRRO, CLI_CIDADE,CLI_UF," +
        "CLI_FONE,CLI_CEL,CLI_CPF) values ('" +
        jTextField_Nome.getText()+"','"+
        jTextField_Endereco.getText()+"','"+
        jTextField_Bairro.getText()+"','"+
        jTextField_Cidade.getText()+"','"+
        jTextField_UF.getText()+"','"+
        jTextField_Telefone.getText()+"','"+
        jTextField_Celular.getText()+"','"+
        jTextField_CPF.getText()+"')";
        
        DAOCliente.executeSQL(sqlinsert);
        
        listaCliente = DAOCliente.getTodosClientes();
        jTable_Cliente.setModel(new TabelaCliente(listaCliente));

}[code]

o primeiro código é o stack trace
o segundo é a classe onde tem o metodo q executa o sql no banco
e o terceiro é onde eu chamo o metodo ExecutaSQL…

ele grava o registro no banco, mas emite a msg do erro o erro referencia a linha 64 da claasse DAOCLiente

o sql q eu passo no metodo é uma inserção…

Erro:

Resposta:

insert não tem resultset correto?

abr e sucesso

mas se eu não coloco o result set ele não faz nenhuma ação e não executa nada e nem grava no banco… como ficaria então…

???

 statement = conexao.getConexao().createStatement();
 statement.executeQuery(sql);

COLOQUEI ASSIM MAS AINDA DA O ERRO

para insert ou updates vc pode utilizar assim:

ou statement.executeUpdate(sql);

qdo ocorre um exception a trasação é abortada e o sql não é executado…

[quote=equinhone]mas se eu não coloco o result set ele não faz nenhuma ação e não executa nada e nem grava no banco… como ficaria então…
???

 statement = conexao.getConexao().createStatement();
 statement.executeQuery(sql);

COLOQUEI ASSIM MAS AINDA DA O ERRO[/quote]

o msm erro?

sim, o mesmo erro

tenta o executeUpdate