Erro java.lang.NullPointer Exception. [RESOLVIDO]

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:

[code]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());
    }
}[/code]

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.




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.

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