Подтвердить что ты не робот

Поддерживает ли Android поддержку JDBC

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

Есть ли (недокументированный?) JDBC-драйвер для базы данных Android SQLite. Попробуй это: (от 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);
    } 

Ответ 3

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

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

Ответ 4

Теперь есть такой драйвер: SQLDroid.