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,
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.
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.
vagner_Portela:
throws ThrowError
Meu erro é na linha
statement = connect.prepareStatement(sql);
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
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.
Ivanfilho7:
statement
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