Erro na linha 83 - statement = connect.prepareStatement(Sql);

Ao debugar o código aparece erro na linha 83 onde fica o
statement = connect.prepareStatement(Sql);
já tentei de varias formas e não consegui sempre dá o mesmo erro.

segue meu codigo abaixo

/* CONEXÃO */

private static String classs = "net.ucanaccess.jdbc.UcanaccessDriver";

Connection connect = null;
ResultSet rs;
PreparedStatement statement = null;

public static Connection connect(String classs) {

    Connection conn = null;
    String ConnURL = null;

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);

    try {
        Class.forName(classs).newInstance();
        conn = DriverManager.getConnection("jdbc:ucanaccess://192.168.2.15\\D:\\Android_Conexao\\Consulta_Android.accdb;memory=true");

    } catch (SQLException se) {
        Log.e("ERRO", se.getMessage());
    } catch (ClassNotFoundException e) {
        Log.e("ERRO", e.getMessage());
    } catch (Exception e) {
        Log.e("ERRO", e.getMessage());
    }
    return conn;
}

// CONSULTA NO BANCO DE DADOS

try {

                String Sql = "SELECT dbo_log_08Checklist.Carreta1, dbo_CadCarreta.Tipo, dbo_log_08Checklist.CaligragemCarreta\n" +
                        "FROM dbo_log_08Checklist INNER JOIN dbo_CadCarreta ON dbo_log_08Checklist.Carreta1 = dbo_CadCarreta.Carreta1";

                statement = connect.prepareStatement(Sql);
                final ArrayList<Calibragem> list = new ArrayList<Calibragem>();
                rs = statement.executeQuery();

                while (rs.next()) {

                    Calibragem pneus = new Calibragem();


                    pneus.setCarreta("A", rs.getString("Carreta1"));

                    pneus.setTipo("B", rs.getString("Tipo"));

                    pneus.setCalibragem("C", rs.getString("CaligragemCarreta"));

                    list.add(pneus);//adicionando o objeto nela

                }

Esse erro só ocorre quando você debuga?

Por curiosidade, onde você instancia a variável connect?

Aliás, por que você tem 2 objetos de Connection?

o 1 pra fazer o a conexão com o banco pra fazer o select e o 2 pra return da conexão.

Ok, volto a perguntar, onde você instancia o 1, então?
Ele está null e por isso você tem o erro naquela linha.

Então não estanciei, :roll_eyes:
onde eu estancio pra não gerar o erro ?

Instanciar.
Veja, você tem essas duas variáveis e eu acho inútil. Mas, ok, é tua opção.
Você pode instanciar este objeto antes de invocar o preparedStatement.

Antes de mostrar, perceba que você tem uma variável chamada connect e um método chamado connect. Não que isso não seja permitido, mas, o ideal é ter nomes claros e não iguais.

Sugiro que mude o nome do método para outra coisa, no caso, eu sugiro que seja getConnection

connect = getConnection(); //Aqui você instancia o objeto
statement = connect.prepareStatement(Sql);
final ArrayList<Calibragem> list = new ArrayList<Calibragem>();

Instancia e retorna o primeiro ué.

“Estância” = Lugar onde se criam cavalos.
“Instância” = Objeto de uma classe.
:wink:

try {

                String sql = "SELECT dbo_log_08Checklist.Carreta1, dbo_CadCarreta.Tipo, dbo_log_08Checklist.CaligragemCarreta\n" +
                        "FROM dbo_log_08Checklist INNER JOIN dbo_CadCarreta ON dbo_log_08Checklist.Carreta1 = dbo_CadCarreta.Carreta1";

                connect= getConnection();
                PreparedStatement statement = connect.prepareStatement(sql);
                final ArrayList<Calibragem> list = new ArrayList<Calibragem>();
                rs = statement.executeQuery();
                while (rs.next()) {

                    Calibragem pneus = new Calibragem();


                    pneus.setCarreta("A", rs.getString("Carreta1"));

                    pneus.setTipo("B", rs.getString("Tipo"));

                    pneus.setCalibragem("C", rs.getString("CaligragemCarreta"));

                    list.add(pneus);//adicionando o objeto nela

                }

Fiz do jeito que falou e ainda apareceu a mensagem de erro na linha

public class BaseDAO {

public static final String URL_DB_CONNECT = "jdbc:mysql://localhost/nomeDoSeuDB";
public static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
public static final String NAME_DB = "nomeDoSeuDB";
public static final String PASS_DB = "senhaDoDB";
private static Connection connection;

public BaseDAO() {
    try {
        Class.forName(JDBC_DRIVER);
    } catch (ClassNotFoundException e) {
    }
}

public static Connection getConnection() throws ThrowError {

    if (connection == null) {
        try {
            Class.forName(JDBC_DRIVER);
            connection = DriverManager.getConnection(URL_DB_CONNECT, NAME_DB, PASS_DB);

        } catch (SQLException ex) {
            return null;
        } catch (ClassNotFoundException ex) {
            return null;
        }
    }

    return connection;
}}

Isso ai é apenas Base De Conexão para Persistência de dados , lembrando que você vai precisar do .jar de conexão no meu caso mysql.

Meu erro é na linha
statement = connect.prepareStatement(sql);

Qual o erro?

try {

                connect= getConnection();

                **Erro aparece nessa linha -->** statement = connect.prepareStatement("SELECT dbo_log_08Checklist.Carreta1, dbo_CadCarreta.Tipo, dbo_log_08Checklist.CaligragemCarreta\n" +
                        "FROM dbo_log_08Checklist INNER JOIN dbo_CadCarreta ON dbo_log_08Checklist.Carreta1 = dbo_CadCarreta.Carreta1");

                final ArrayList<Calibragem> list = new ArrayList<Calibragem>();
                rs = statement.executeQuery();
                while (rs.next()) {

                    Calibragem pneus = new Calibragem();


                    pneus.setCarreta("A", rs.getString("Carreta1"));

                    pneus.setTipo("B", rs.getString("Tipo"));

                    pneus.setCalibragem("C", rs.getString("CaligragemCarreta"));

                    list.add(pneus);//adicionando o objeto nela

                }

Qual o erro? Qual a mensagem do erro? Em que momento o erro ocorre?

Só diz que o erro é nessa linha

at com.example.comandodiesel.masterlink_mobile.MainActivity$1.onClick(MainActivity.java:76)

Isso é android, não?
Coloca tudo o que tiver no log.
Pois certamente você não está lendo alguma informação deste log.

E/ERRO: UCAExc:::0.0 given file does not exist: 192.168.2.15\D:\Android_Conexao\Consulta_Android.accdb

:thinking: não está encontrando o banco de dados …

Cara, na boa.
Procure um tutorial de como fazer persistência no android, pois você está fazendo as coisas de maneira muito, mas muito fora do comum.
O Android foi desenvolvido para não ter uma conexão direta a uma base de dados.
O mais comum é você interagir com um webservice REST, através do qual, realiza as operações de persistência.
Existe a possibilidade de fazer funcionar, mas isso é como o scriptlet numa JSP: existe, mas não se deve usar.

Então o padrão é assim!
1º Faça conexão da Base de Dados (BaseDAO.java).
2º Verifique se a BaseDAO conectou
3º Cria uma classe EntityDAO.java e faça o CRUD nessa classe.
OBS: Vou te postar um código:

public static void main(String[] args) throws SQLException {
    BaseDAO db = new BaseDAO();
    Connection conn = null;
    try {
        conn = db.getConnection();
        System.out.println(conn + "\n" + Constantes.PROCESSO_MESS_OK);
    } catch (ThrowError ex) {
        System.out.println(ex.getMessge);
        Logger.getLogger(BaseDAO.class.getName()).log(Level.SEVERE, null, ex);
    }

}

Enquanto esse método náo der LOG Positivo cara não adianta ir para o passo 3º
Testa ai e me avisa