ActiveAndroid с использованием существующей базы данных

Я использую ActiveAndroid в качестве сторонней библиотеки для работы с базой данных sqlite в Android, я не есть проблемы с созданием и использованием новых баз данных с этой библиотекой, но я не знаю, как я могу использовать свою собственную существующую базу данных с этой библиотекой? я хочу поместить свою собственную базу данных в папку ресурсов и загрузить ее в ActiveAndroid.

public class Application extends com.activeandroid.app.Application
{

    @Override
    public void onCreate()
    {
        super.onCreate();
        createDatabase();
    }

    private void createDatabase()
    {
        Configuration dbConfiguration = new Configuration.Builder(this).setDatabaseName("dastan.db").create();
        ActiveAndroid.initialize(dbConfiguration);

    }


    @Override
    public void onLowMemory()
    {
        android.os.Process.killProcess(android.os.Process.myPid());
        super.onLowMemory();
    }
}

person Ali Hasanzade    schedule 03.01.2016    source источник


Ответы (2)


«xArthasx» говорит в выпуске 41:

Если у вас есть файл (база данных sqlite) и таблицы сохраняют ту же структуру, что и класс, созданный вами в java, вы сможете использовать базу данных, скопировав файл (база данных sqlite) в каталог ресурсов (каталог проекта) и установите AA_DB_NAME равно имени файла.

Если существующая база данных не была создана с помощью ActiveAndroid, возможно, вам потребуется перенести данные; см. Использование ActiveAndroid для существующего содержимого базы данных.

person CL.    schedule 03.01.2016
comment
Я использовал это решение, но оно возвращает нулевые данные, не могли бы вы разместить здесь коды? - person Ali Hasanzade; 03.01.2016

Согласно этому официальному документу

Вы можете использовать предварительно заполненную базу данных, выполнив следующие действия:

Поместите копию файла базы данных SQLite в каталог ресурсов вашего приложения, например:

/myapp/src/main/assets/prepop.db

Убедитесь, что вы установили AA_DB_NAME в файле манифеста, например:

<meta-data android:name="AA_DB_NAME" android:value="prepop.db" />

Теперь, когда вы развернете свое приложение, оно скопирует файл prepop.db из каталога ресурсов в /data/data/myapp/databases storage..

Примечание. Это приведет к дублированию базы данных, поскольку она будет упакована вместе с APK и скопирована в каталог хранилища. Убедитесь, что база данных работает правильно с ActiveAndroid

Чтобы убедиться, что база данных работает правильно с ActiveAndroid, выполните следующие действия:

Настройте таблицу android_metadata

CREATE TABLE "android_metadata" ("locale" TEXT DEFAULT 'en_US')

INSERT INTO "android_metadata" VALUES ('en_US')

Если вы не определили имя столбца id для своих моделей, убедитесь, что первичные ключи переименованы в значение по умолчанию, Id, вместо _id, которое является стандартом для баз данных Android. Однако, если ваши данные должны отображаться, например, в ListViews, рекомендуется определить столбцы первичного ключа как _id. Вы можете сделать это, просто добавив параметр id = "_id" к аннотации @Table вашей модели, например:

@Table(name = "Items", id = "_id")
public class Item extends Model {
person Ali Hasanzade    schedule 03.01.2016
comment
Предположим, я делаю это для приложения версии 2, а в приложении версии 1 уже есть файл базы данных в /data/data/myapp/databases. Будет ли он перезаписывать существующий файл базы данных или игнорировать файл активов? - person Brijesh Masrani; 23.02.2016