Ir ao conteúdo
  • Cadastre-se
Victor Gimenez

Nullpointerexception ao dar setstring

Recommended Posts

Boa Tarde,

Estou tentando realizar uma função que pega o ID e mostra em uma JTextField a partir da opção selecionada na JComboBox, dai agora estou com problema na linha pstm.setString(1, pridetalhe.getPrioridade()); no código a seguir:

public class MySQLPrioridadeDetalheDAO implements PrioridadeDetalheDAO {

    private Connection con;
    private PreparedStatement pstm;
    private Statement stm = null;
    private ResultSet rs = null;

@Override
    public Long getCodPrioridade() throws DAOException{
        PrioridadeDetalhe pridetalhe = null;
        String GETCOD = null;
        long valor = 0;
        
        try {
            GETCOD = "SELECT * from prioridadedetalhe where prioridade = ? ";
            pstm = con.prepareStatement(GETCOD);
            //\/ erro logo abaixo NullPointerException
            pstm.setString(1, pridetalhe.getPrioridade());
            rs = pstm.executeQuery();
            while(rs.next()){
                pridetalhe = new PrioridadeDetalhe();
                pridetalhe.setIdPrioridadeDetalhe(rs.getLong("idPrioridadeDetalhe"));
            }
        } catch (SQLException ex) {
            throw new DAOException("Erro no SQL", ex);
        } finally {
            if(pstm!=null){
                try {
                    pstm.close();
                } catch (SQLException ex) {
                    throw new DAOException("Erro ao fechar conexão", ex);
                }
            } if(rs!=null){
                try {
                    rs.close();    
                } catch (SQLException ex) {
                    throw new DAOException("Erro ao fechar conexão", ex);
                }           
            }
        }        
        return valor;
    }

}

 

Quando ela é executada o compilador já lança uma NullPointerException mostrando erro nessa linha, e logo a seguir... tem a form aonde ela é executada:

public class FormNovaChamada extends javax.swing.JDialog {
    private Chamado chamado;
    private PrioridadeDetalhe pridetalhe;
    private PrioridadeDetalheModel model;
    private boolean editavel;
    private MySQLChamadoDAO chamdao;
    private MySQLPrioridadeDetalheDAO pridao;
    private FormInicio frmini;
    private MySQLDaoManager man;
    private ResultSet rs = null;


    private void cbPrioridadeDetalheActionPerformed(java.awt.event.ActionEvent evt) {                                                    
       try{
          MySQLDaoManager man = new MySQLDaoManager("root", "", "localhost", "atendimentos", 3306);  
          Long input = man.getPrioridadeDetalheDAO().getCodPrioridade();
          tfIdPrioridadeDetalhe.setText(String.valueOf(input));
       }  catch (SQLException ex){
           
       }  catch (DAOException ex) {
            Logger.getLogger(FormNovaChamada.class.getName()).log(Level.SEVERE, null, ex);
       }
    }  

}

 

Só estou em dúvida qual seria esse objeto que está faltando ai sendo que instanciei todos esses que estou usando, e o que falta colocar no código... Muito Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos analisar seu código:

    public Long getCodPrioridade() throws DAOException{
        PrioridadeDetalhe pridetalhe = null; //Perceba que você não iniciou o objeto, portanto ele é NULO
        String GETCOD = null;
        long valor = 0;
        
        try {
            GETCOD = "SELECT * from prioridadedetalhe where prioridade = ? ";
            pstm = con.prepareStatement(GETCOD);
            //\/ erro logo abaixo NullPointerException
            pstm.setString(1, pridetalhe.getPrioridade()); //Veja. Nesse ponto você chama um método de um objeto NULO. Portanto NULLPOINTER lançado aqui
            rs = pstm.executeQuery();
            while(rs.next()){
                pridetalhe = new PrioridadeDetalhe();
                pridetalhe.setIdPrioridadeDetalhe(rs.getLong("idPrioridadeDetalhe"));
            }
        } catch (SQLException ex) {
            throw new DAOException("Erro no SQL", ex);
        } finally {
            if(pstm!=null){
                try {
                    pstm.close();
                } catch (SQLException ex) {
                    throw new DAOException("Erro ao fechar conexão", ex);
                }
            } if(rs!=null){
                try {
                    rs.close();    
                } catch (SQLException ex) {
                    throw new DAOException("Erro ao fechar conexão", ex);
                }           
            }
        }        
        return valor;
    }

Dica para sua vida com orientação à objetos. Sempre que você receber um NullPointerException, retorne à criação dos objetos utilizados naquela linha. ;) ...

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vi agora sua resposta aqui, eu tinha até percebido antes esse problema dai fiz a declaração

PrioridadeDetalhe pridetalhe = new PrioridadeDetalhe();

dai correu tudo certo, quando dei o debug ele tinha iniciado null dai quando fui tentar chamar o método desse objeto ele pegou um valor null e retornou ponteiro nulo!! Valeeu pelo toque agora fixou aqui :)

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×