[RESOLVIDO] java.lang.NullPointerException

Bom dia.

Vejam se conseguem identificar onde está o erro, por favor.

Classe Conexao

package br.com.tutorial;
import java.lang.*;
import java.sql.*;

public class Conexao {
    private String url = "jdbc:mysql://127.0.01/tutorial?user=root&password=root";
    
    public Connection abrirConexao(){
        try{
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            Connection con = DriverManager.getConnection(url);
            System.out.println("Conexao com Banco de Dados estabelecida.");
        }
        catch (SQLException erroSQL) {
            System.out.println("Erro na conexão com o Banco "+erroSQL.getMessage());
        }
        catch (ClassNotFoundException erroClass){
            System.out.println("Erro ao carregar o Driver "+erroClass.getMessage());
        }
        catch (Exception e){
            System.out.println("Ocoreru um erro: "+e.getMessage());
        }
        return null;
    }
    
    public static void fecharConexao(Connection con){
        try{
            con.close();
            System.out.println("Conexao com o Banco de Dados fechada.");
        }   
        catch (SQLException erroSQL){
            System.out.println("Erro na comunicação com o Banco "+erroSQL.getMessage());
        }
        catch (Exception e){
            System.out.println("Ocorreu um erro: "+e.getMessage());
        }
    }
    
    public static void main (String[] args){
        new Conexao().abrirConexao();
    }
}

Classe ProprietarioDAO

package br.com.tutorial;
import java.io.IOException;
import java.sql.*;
import java.util.*;

public class ProprietarioDAO {
    private Connection con;
    
    public ProprietarioDAO(Connection con){
        setCon(con);
    }

    public Connection getCon() {
        return con;
    }

    public void setCon(Connection con) {
        this.con = con;
    }
    
    public String inserir(ProprietarioBean proprietario){
        String sql = "INSERT INTO "
                    +"proprietario(nome,cidade) "
                    +"VALUES(?,?)";
        
        try{
            PreparedStatement p = getCon().prepareStatement(sql);
            p.setString(1, proprietario.getNome());
            p.setString(2, proprietario.getCidade());
            
            if (p.executeUpdate() > 0) {
                return "Dados inseridos com sucesso!";
            }
            else return "Erro ao inserir!";
        }
        catch (SQLException e){
            e.printStackTrace();
            return "SQLException: "+e.getMessage();            
        }
    }
}

Classe Teste

package br.com.tutorial;
import java.sql.*;
import java.util.*;

public class Teste {
    public static void main(String[] args){
        Conexao conexao = new Conexao();
        Connection con = conexao.abrirConexao();
        
        ProprietarioBean pb = new ProprietarioBean();
        ProprietarioDAO pd = new ProprietarioDAO(con);
        
        pb.setNome("João");
        pb.setCidade("Brasília");

        pd.inserir(pb);
    }
    
}

O erro é os seguinte:
Conexao com Banco de Dados estabelecida.
Exception in thread “main” java.lang.NullPointerException
at br.com.tutorial.ProprietarioDAO.inserir(ProprietarioDAO.java:41)
at br.com.tutorial.Teste.main(Teste.java:23)
Java Result: 1

A linha 41 da Classe ProprietarioDAO é esta aqui:
PreparedStatement p = getCon().prepareStatement(sql);

E a linha 23 da Classe Teste:
pd.inserir(pb);

Não consegui identificar porque que está dando Null Pointer…

Tem um errinho na sua classe Conexao…

[code] package br.com.tutorial;
import java.lang.;
import java.sql.
;

public class Conexao {  
    private String url = "jdbc:mysql://127.0.01/tutorial?user=root&password=root";  
      
    public Connection abrirConexao(){  
        try{  
            Class.forName("com.mysql.jdbc.Driver").newInstance();  
            Connection con = DriverManager.getConnection(url);  
            System.out.println("Conexao com Banco de Dados estabelecida.");  
        }  
        catch (SQLException erroSQL) {  
            System.out.println("Erro na conexão com o Banco "+erroSQL.getMessage());  
        }  
        catch (ClassNotFoundException erroClass){  
            System.out.println("Erro ao carregar o Driver "+erroClass.getMessage());  
        }  
        catch (Exception e){  
            System.out.println("Ocoreru um erro: "+e.getMessage());  
        } 

        //VOCÊ ESQUECEU QUE RETORNAR A VARIÁVEL CONECTION AQUI (CORRIGIDO)
        return con;  
    }  
      
    public static void fecharConexao(Connection con){  
        try{  
            con.close();  
            System.out.println("Conexao com o Banco de Dados fechada.");  
        }     
        catch (SQLException erroSQL){  
            System.out.println("Erro na comunicação com o Banco "+erroSQL.getMessage());  
        }  
        catch (Exception e){  
            System.out.println("Ocorreu um erro: "+e.getMessage());  
        }  
    }  
      
    public static void main (String[] args){  
        new Conexao().abrirConexao();  
    }  
}  [/code]

Um abraço!!!

Leia o comentário acima hehehe… viajei na minha resposta

Por isso que é bom mostrar a outras pessoas… eu olhei o código mil vezes e não encontrava.
Fiz a alteração sugerida e funcionou.

Muito obrigada!