Ошибка Android при импорте существующей базы данных в проект - PullRequest
2 голосов
/ 25 июня 2019

У меня возникли некоторые проблемы при попытке импортировать существующую базу данных SQL в мой проект. Я нашел файл .db в папке src / assets и настроил свой DBHandler так:

public class DatabaseOpenHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "test.db";
private static final int DATABASE_VERSION = 1;

public DatabaseOpenHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

Но всякий раз, когда я пытаюсь сделать необработанный запрос из таблицы, Android вместо того, чтобы использовать базу данных из моей папки ресурсов, создает новую пустую с тем же именем и таблицей с именем только android_metadata.

Как я могу настроить это правильно?

1 Ответ

2 голосов
/ 25 июня 2019

По сути, вам нужно скопировать файл из папки ресурсов в удобное для использования место, обычно data / data / your_packagae / database / test.db .

В предоставленном вами коде, как вы обнаружили, даже не будет учитываться файл, находящийся в папке ресурсов, и, следовательно, при первой попытке открыть базу данных (при первом обращении к ней, когда не предпринимается попытка открыть база данных, когда вы создаете экземпляр объекта DatabaseOpenHelper), новая пустая база данных без таблиц (за исключением таблицы android_metadata, которая создается как часть открытого в Android SDK).

Копирование файла должно быть сделано, только если файл не существует в этом месте.

Вы можете упростить копирование, используя SQLiteAssetHelper , отметив, что для этого требуется, чтобы копируемый файл находился в каталоге database папки активов (возможно, у вас есть создать каталог баз данных).

В качестве альтернативы вы можете использовать свой собственный процесс копирования, этот ответ является примером (хотя и слегка раздутым для демонстрации / объяснения), который делает это.

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