Использование предварительно заполненной базы данных SQlite в Android - PullRequest
2 голосов
/ 20 мая 2019

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

Я удалил location и createfromLocation из базы данных кода openDataBaseбыл создан в устройстве Android, который был бы пустым без схемы и данных.Я могу заполнить данные из кода, но это не имеет никакого смысла.Так в чем может быть ошибка, которую я совершаю. Я что-то здесь упускаю?

Код (файл App.js):

 const db = SQLite.openDatabase(
      {
        name: 'Recipe.db',
        location: 'default',
        createFromLocation: '~Recipe.db',
      }

Журнал:

 OPEN database: Recipe.db
05-20 09:22:23.620  5975  6009 I ReactNativeJS: new transaction is waiting for open operation
05-20 09:22:23.629  5975  6009 I ReactNativeJS: OPEN database: Recipe.db failed, aborting any pending transactions
05-20 09:22:23.632  5975  6009 I ReactNativeJS: { [Error: Could not open database]
05-20 09:22:23.632  5975  6009 I ReactNativeJS:   code: 0,
05-20 09:22:23.632  5975  6009 I ReactNativeJS:   line: 100047,
05-20 09:22:23.632  5975  6009 I ReactNativeJS:   column: 27,

1 Ответ

1 голос
/ 20 мая 2019

Невозможно открыть базу данных SQLite для записи, если она хранится в папке «Ресурсы».Обычно при запуске приложение проверяет наличие базы данных SQLite в своей собственной папке / data / data / database.Если нет, он копирует базу данных из папки «Ресурсы» в папку / data / data / database, а затем открывает эту копию для записи.

Изменения, внесенные в базу данных в папке / data / data / database, будутсохраняться, даже если приложение обновлено.Но он будет удален, если пользователь удалит приложение.Тогда приложению снова придется делать копию базы данных.

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