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

Могу ли я загрузить SQLite db on/sdcard и получить доступ к нему из своего приложения для Android?

Я уже выяснил, что нет возможности связывать файлы в .apk и иметь их на /sdcard, лучшим вариантом пока является загрузка больших файлов при первом запуске. Я прошел через учебник, в котором рассказывалось о том, как связать sqlite db с apk, а затем скопировать его, чтобы его можно было получить с помощью SQLiteDatabase (тем самым удваивая необходимое пространство и вообще не используя /sdcard ).

http://developer.android.com/guide/topics/data/data-storage.html#db говорит, что все базы данных ДОЛЖНЫ быть в /data/data/package _name/databases.

Это действительно так? Есть ли способ обмануть структуру в открытии базы данных, которая помещается в раздел /sdcard? Есть ли способ использовать другую оболочку/структуру Javaite java для доступа к таким базам данных?

Если ответ на вышеизложенное "Нет", какие у меня есть другие варианты? Мои данные очень хорошо представлены в реляционной модели, но слишком велики, плюс я хочу иметь возможность обновлять ее без необходимости переустановки/обновления всего приложения.

4b9b3361

Ответ 1

Конечно. Документы немного противоречат этому, поскольку они также говорят, что никаких ограничений не наложено. Я думаю, они должны сказать, что относительные пути относятся к вышеуказанному местоположению, а dbs там закрыты. Вот код, который вы хотите:

File dbfile = new File("/sdcard/mydb.sqlite" ); 
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);
System.out.println("Its open? "  + db.isOpen());

Ответ 2

Попробуйте следующее:

String dir = Environment.getExternalStorageDirectory().getPath()
File dbfile = new File(dir+"/mydb.sqlite"); 
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);
System.out.println("Its open? "  + db.isOpen());

Ответ 3

Просто идея:

  • вы можете поместить свой файл database.db в папку с ресурсами.

  • если файл database.db больше 2 Мб, система не может сжать его, поэтому вам нужны другие параметры

  • вы можете переименовать ваш database.db, например database.jit или database.mp3, которые не сжаты, чем при первом запуске, вы можете переименовать его в database.db

Ответ 5

Я разделяю следующий код. Объявить opcionesMenu Vector<String>

Vector < String > opcionesMenu = new Vector< String >();
// the database is SDCard. I saw  the code to Blackberry (net.rim)
String rutaDB = "/storage/extSdCard/Android/databases/Offshore.db";


    SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(rutaDB, null);

    Cursor cursor = db.rawQuery("SELECT Codigo, Nombre FROM Ruta ORDER BY Codigo, Nombre", null);

    if (cursor.moveToFirst())
    {
        do
        {
            opcionesMenu.add(cursor.getString(0) + " - " + cursor.getString(1));
        } while(cursor.moveToNext());
    }

    db.close();