Erro java.lang.NullPointer Exception. [RESOLVIDO]

2 respostas
A

Pessoal, boa tarde.

Estava desenvolvendo uma classe que tem como objetivo inserir usuários, listar os usuários, excluir algum usuário de acordo com o seu código inteiro e atualizar os mesmos.
Estou utilizando como banco de dados mySQL.

Segue o código abaixo:

package exercicio04list2;


//inicio da classe Cliente, para ler dados e retornar dados.
import java.util.*;

public class Cliente {
    
    private String nome;
    private String email;
    private int codigo;

    public String getNome() {
        return nome;
    }

    public String getEmail() {
        return email;
    }

    public int getCodigo() {
        return codigo;
    }
    
    public void lerCodigo(){
        System.out.println("Codigo");
        Scanner in=new Scanner(System.in);
        codigo=in.nextInt();
    }
 
    public void lerEmail(){
        System.out.println("Email");
        Scanner in=new Scanner(System.in);
        email=in.nextLine();
    }
    
    public void lerNome(){
        System.out.println("Nome");
        Scanner in=new Scanner(System.in);
        nome=in.nextLine();
    }
 
   
}

//inicio da classe Dao, para abrir o banco de dados.


import java.sql.*;

public class Dao {
    
    Connection con=null;
    PreparedStatement stmt=null;
    ResultSet rs=null;
    
    public void abreConexao() throws Exception{
        Class.forName("com.mysql.jdbc.Driver");
        con=DriverManager.getConnection("jdbc:mysql://localhost:3306/exercicio03","root","asr577");
               
    }
    
    public void fechaConexao(){
        try{
            if(con!=null)
                con.close();
            if(stmt!=null);
                stmt.close();
            if(rs !=null);
                rs.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
      
   
}

//inicio da classe ClienteDao para manipular o banco de dados.

public class ClienteDao extends Dao {
    
    public void inserir(int codigo, String nome, String email) throws Exception{
        abreConexao();
        stmt=con.prepareStatement("insert into Cliente values (?,?,?)");
        stmt.setInt(1,codigo);
        stmt.setString(2,nome);
        stmt.setString(3,email);
        stmt.execute();
        fechaConexao();
        }//codigo para inserir os usuarios
    
    public void listar()throws Exception{
        
        abreConexao();
        stmt=con.prepareStatement("select * from Cliente");
        rs=stmt.executeQuery();
        while(rs.next()){
            System.out.println("Código...: "+rs.getInt("codigo"));
            System.out.println("Nome...: "+rs.getString("nome"));
            System.out.println("Email...: "+rs.getString("email"));
        }
        stmt.close();
        fechaConexao();
        
    }//codigo para listar os usuarios
    
    public void excluir(int codigo)throws Exception{
       int cod=codigo;
        abreConexao();
        stmt=con.prepareStatement("delete from teste where codigo= ?");
        stmt.setInt(1,cod);
        stmt.execute();
        stmt.close();
        fechaConexao();
        
    }//codigo para excluir os usuarios
    
    public void atualizar(int codigo, String nome, String email)throws Exception{
        abreConexao();
        stmt=con.prepareStatement("update cliente set codigo= ?, nome= ?, email= ? where codigo= ?");
        stmt.setInt(1,codigo);
        stmt.setString(2,nome);
        stmt.setString(3,email);
        stmt.setInt(4,codigo);
        stmt.execute();
        stmt.close();
        fechaConexao();
        
        
    }//codigo para atualizar os dados dos usuarios.

    
}


//inicio da classe Main
public class Main {
    
    public static void main(String[] args) {
        try{
        Cliente cli=new Cliente();
        cli.lerCodigo(); //lê o código do cliente
        cli.lerNome(); //lê o nome do cliente
        cli.lerEmail(); //lê o email do cliente.
        
        ClienteDao dao=new ClienteDao();
        dao.inserir(cli.getCodigo(),cli.getNome(),cli.getEmail());//insere os dados dos clientes
        System.out.println("Dados incluídos com sucesso"); //se estiver tudo certo imprime essa mensagem
        dao.listar(); //lista os usuarios inseridos
        System.out.println("Digite o código do cliente que deseja excluir");
        cli.lerCodigo(); //lê o codigo do usuario que deseja excluir
        dao.excluir(cli.getCodigo()); //exclui o usuario referente ao codigo acima.
        dao.listar(); //exibe tabela após exclusao
     
        
        
            
      
        
        
        
        
        }catch (Exception e){
            System.out.println(e.getMessage());
        }
    }

Ao executar a classe Main, os dados solicitados Codigo, Nome e E-mail são inseridos, tanto que ao consultar a tabela via console mySQL os dados estão lá, mas no netBeans dá a mensagem de erro como nas imagens:

Alguem poderia me ajudar? Gostaria de saber o que está de errado com o codigo.



2 Respostas

AndreAlves

No método fechaConexao, tenta inverter a ordem em que você encerra a conexão.

Primeiro encerra o ResultSet, depois o Statement e por último o Connection.

A

Obrigado AndreAlves, pela sua ajuda. Está resolvido. :smiley:

Criado 12 de abril de 2009
Ultima resposta 12 de abr. de 2009
Respostas 2
Participantes 2