Поддерживает ли Android JDBC? - PullRequest
21 голосов
/ 13 ноября 2009

Я знаю, что на Android есть пакет android.database.sqlite, который предоставляет полезные классы для управления внутренней базой данных Android.

Вопрос в том, могу ли я использовать стандартный пакет java.sql для управления базой данных Android без использования чего-либо из android.database.sqlite. * Я пытаюсь открыть соединение, используя драйвер SQLite JDBC, но когда я добавил библиотеку как ссылку проект eclipse аварийно завершает работу с "кучей java из памяти ... не удалось преобразовать в dalvik VM".

Ответы [ 4 ]

17 голосов
/ 13 ноября 2009

Вы не можете легко импортировать JAR, реализующий классы java.*. И JDBC необходимо будет перенести на Android, поскольку он, вероятно, опирается на классы в JavaSE, которых нет в Android. И в любом случае вам нужно будет написать свой собственный драйвер JDBC для SQLite, оборачивая API, который уже есть в Android, так как я подозреваю, что существующий драйвер JDBC использует JNI. И когда все это будет сделано, у вас будет приложение, которое добавляет много вздутия, уменьшая вероятность того, что люди загрузят и сохранят ваше приложение.

Короче, я бы не пошел по этому пути.

11 голосов
/ 07 декабря 2009

Существует (недокументированный?) Драйвер JDBC для базы данных SQLite в Android. Попробуй это: (от http://groups.google.com/group/android-developers/browse_thread/thread/cf3dea94d2f6243c)

    try {
        String db = "jdbc:sqlite:" + getFilesDir() + "/test.db";

        Class.forName("SQLite.JDBCDriver");
        Connection conn = DriverManager.getConnection(db);
        Statement stat = conn.createStatement();
        stat.executeUpdate("create table primes (number int);");
        stat.executeUpdate("insert into primes values (2);");
        stat.executeUpdate("insert into primes values (3);");
        stat.executeUpdate("insert into primes values (5);");
        stat.executeUpdate("insert into primes values (7);");

        ResultSet rs = stat.executeQuery("select * from primes");
        boolean b = rs.first();
        while (b) {
            Log.d("JDBC", "Prime=" + rs.getInt(1));
            b = rs.next();
        }

        conn.close();
    } catch (Exception e) {
        Log.e("JDBC", "Error", e);
    } 
5 голосов
/ 12 января 2010

драйвер JDBC недокументирован и не поддерживается. пожалуйста, не используйте этот код.

избегайте java.sql и используйте вместо него android.database.sqlite.

2 голосов
/ 16 марта 2015

Сейчас есть такой драйвер: SQLDroid .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...