Problemas com java.lang.NullPointerException - HELP ME!

14 respostas
E

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)

14 Respostas

antoniopopete

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

renan_

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 ?

Reilander

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

E

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

E
Reilander:
as variáveis "con" e "stmt" não foram inicializadas, na execuçaõ do método "executeSQL"

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:

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);
            }
       }

Agradeço a ajuda...

E

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

baudamix

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…

E
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','[telefone removido]','[telefone removido]','[telefone removido]')";
        
        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...

baudamix

Erro:

Resposta:

insert não tem resultset correto?

abr e sucesso

E

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

baudamix

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…

baudamix

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

o msm erro?

E

sim, o mesmo erro

baudamix

tenta o executeUpdate

Criado 14 de abril de 2008
Ultima resposta 14 de abr. de 2008
Respostas 14
Participantes 5