java.lang.NullPointerException

Criei a classe CrudCalibra! Contudo é lançada uma exception do tipo java.lang.NullPointerException! Será que alguém me podia ajudar neste problema?

A classe é a seguinte:

public class CrudCalibra extends ConexaoBD {

CallableStatement consultar;
CallableStatement insert;

private Statement stmt;
private ResultSet rs;
String sql;

public boolean ConsultarDados(Calibra pneu) {

  Connection conexao = null;
    CtrlCalibra ctrlcalibra = new CtrlCalibra();
   
     ArrayList<Calibra>lista=new ArrayList<Calibra>();
    try {

        if (ConectarBD()) {

            consultar = conexao.prepareCall("dbo.mtlConsulta");

            stmt = conexao.createStatement();
            sql = ("SELECT log_08Checklist.Carreta1, Tipo, log_08Checklist.CaligragemCarreta FROM MasterLink_CadastroGeral.dbo.CadCarreta INNER JOIN MasterLink_ControleDeLogistica.dbo.log_08Checklist ON MasterLink_CadastroGeral.dbo.CadCarreta.Carreta1 = log_08Checklist.Carreta1 WHERE"
                    + "((CadCarreta.Carreta1 = @Carreta1) OR (@Carreta1 IS NULL)) AND "
                    + "((Tipo LIKE '%' + @Tipo + '%') OR (@Tipo IS NULL))");

            rs = stmt.executeQuery(sql);
            while (rs.next()) {

                consultar.setString(1, pneu.getCarreta1());
                consultar.setString(2, pneu.getTipo());
                consultar.setInt(1, pneu.getCalibragemCarreta());
                lista.add(pneu);
            }
            stmt.execute(sql);
          
        }

    } catch (SQLException ex) {

        setMensagem("Error de Sintaxe" + ex.getMessage());

    }
      return ctrlcalibra.ConsultarDados(pneu);
}

Preste atenção nesta linha

e nesta

E perceba que entre elas, em nenhum momento, você instancia o objeto conexao.

P.S.: Onde você está aprendendo Java? Pois acredito que não exista nenhuma apostila, vídeo aula, livro, curso decente que não ensine que os nomes de classes devem, por convenção, iniciar com letra maiúscula e os nomes de atributos e métodos (salvo as constantes), com letra minúscula.
Isso não vai afetar o funcionamento do sistema, mas, causa estranheza em quem já conhece de java.

if (ConectarBD()) {

            ConexaoBD conexao = new ConexaoBD();
            consultar = conexao.prepareCall("dbo.mtlConsulta");

            stmt = conexao.createStatement();
            sql = ("SELECT log_08Checklist.Carreta1, Tipo, log_08Checklist.CaligragemCarreta FROM MasterLink_CadastroGeral.dbo.CadCarreta INNER JOIN MasterLink_ControleDeLogistica.dbo.log_08Checklist ON MasterLink_CadastroGeral.dbo.CadCarreta.Carreta1 = log_08Checklist.Carreta1 WHERE"
                    + "((CadCarreta.Carreta1 = @Carreta1) OR (@Carreta1 IS NULL)) AND "
                    + "((Tipo LIKE '%' + @Tipo + '%') OR (@Tipo IS NULL))");

            rs = stmt.executeQuery(sql);

Mas quando faço a instancia do objeto ele aparece erros nas linhas abaixo.

            ConexaoBD conexao = new ConexaoBD();
            consultar = conexao.prepareCall("dbo.mtlConsulta");
            stmt = conexao.createStatement();

Teu código está bem confuso.
Para que serve esta linha:

E quais são os erros? Seja mais conciso, mais coerente. Identifique o erro, informe o erro. Assim fica mais fácil ajudar.

Aparece esses erro quando instancio o objeto.

E você lê a mensagem, entende e tenta corrigir ou simplesmente ignora?
Afinal, ela diz, claramente, “A variável conexao já foi definida no método ConsultarDados”.

Ou seja, você está declarando uma nova variável com o mesmo nome de uma que já existe. Isso não pode.

OLHA O QUE APARECE AGORA

Você está tentando invocar um método prepareCall(String) no objeto conexao, mas a classe ConexaoBD não possui este método.

Staroski,
só novato em java e to pesquisando e aprendendo… poderia dizer como ficaria esse método ?

Cara, isso é daquelas coisas que me deixam totalmente decepcionado.
Não queime etapas. Não fuja das aulas.
É nítido que você não entende, ainda, o que é classe, instância e objeto. Volte algumas casas, estude isso e, daí sim, retome onde está.