JDBC работает в эмуляторе Android, но не на реальном устройстве? - PullRequest
0 голосов
/ 10 мая 2018

Я использую Android Studio для разработки приложения для Android, которое подключается к базе данных Oracle с помощью драйверов JDBC.

Проблема:

Прекрасно работает при компиляции и запуске на эмуляторе Android (API 26). Но когда я пытаюсь запустить его на реальном устройстве (API 19), происходит сбой.

Сбой при вызове Class.forName("oracle.jdbc.driver.OracleDriver"), вызывающий ClassNotFoundException.

Код:

public class LiveDB {
String driver = "oracle.jdbc.driver.OracleDriver";
String serverName = "192.168.x.x";
String portNumber = "1521";
String db = "orcl";
String url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + db;
String user = "someuser";
String pwd = "somepass";
Connection con = null;

private void openConnection(){
    if(con != null) return;
    try {
        Class.forName(driver).newInstance();
        con = DriverManager.getConnection(url, user, pwd);
    } catch (Exception e) {
        e.printStackTrace();
        con = null;
    }
}

private void closeConnection(){
    if(con == null) return;
    try{
        con.close();
    }
    catch (Exception e){
        e.printStackTrace();
        con = null;
    }
}

public ArrayList<Student> searchStudents(String input){
    ArrayList<Student> students = new ArrayList<>();
    openConnection();
    try {
        String query = Student.getQuery(input);
        Statement statement = con.createStatement();
        ResultSet set = statement.executeQuery(query);
        while (set.next()) {
            //Getting data from set and show it.
        }
    }
    catch (Exception e){
        e.printStackTrace();
        con = null;
    }
    closeConnection();
    return students;
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...