2016-01-03 3 views
2

Я использую ActiveAndroid в качестве сторонней библиотеки для работы с базой данных sqlite в android, у меня нет проблем с созданием и использованием новых баз данных с этой библиотекой, но я не знаю, как могу ли я использовать свою собственную существующую базу данных с этой библиотекой? Я хочу поместить свою собственную базу данных в папку с ресурсами и загрузить ее в библиотеку ActiveAndroid.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(); 
    } 
} 

ответ

0

Согласно этому official document

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

Поместите копию файла базы данных 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, что является стандартом для баз данных Android. Однако, если ваши данные должны отображаться в ListViews, например, рекомендуется определить столбцы первичного ключа как _id. Вы можете сделать это, просто добавив id = "_id" параметров в @Table аннотацию на вашей модели, например, так:

@Table(name = "Items", id = "_id") 
public class Item extends Model { 
+0

Предположим, что я делаю это для версии приложения 2, а версия приложения 1 уже имеет файл db в/data/data/myapp/databases. Перезапишет ли он существующий файл db или проигнорирует файл актива? –

1

«xArthasx» говорит в Issue 41:

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

Если существующая база данных не была создана с помощью ActiveAndroid, возможно, вам необходимо перенести данные; см. Use ActiveAndroid on existing database-content.

+0

Я использовал это решение, но оно возвращает нулевые данные, пожалуйста, вы можете отправлять коды здесь? –

Смежные вопросы