Доступ к базе данных SQLite из папки активов без копирования в папку данных пользователя

В моем приложении iOS у меня есть большая (270 МБ), предварительно заполненная база данных sqlite, доступная только для чтения. Я храню данные в пакете приложений и без проблем запрашиваю их. Я не копирую базу данных в папку документов пользователя, потому что в этой ситуации было бы бессмысленно занимать больше места дублирующей базой данных. У меня есть отдельная гораздо меньшая база данных, которую я копирую в папку документов пользователя для хранения настроек пользователя. Приложение работает просто отлично.

Теперь я пытаюсь перенести свое приложение на Android с помощью Android Studio, но не представляется возможным получить доступ к базе данных из папки с ресурсами. Я нашел много документации по вспомогательным классам баз данных для Android, которые я пробовал, но всегда кажется, что подход заключается в копировании базы данных из папки ресурсов в папку данных пользователя. Это было бы пустой тратой места, и, по моему опыту, приложение не может скопировать базу данных без сбоя (может быть, из-за размера? У меня не было проблем с копированием меньшей тестовой базы данных).

Есть ли способ получить доступ к базе данных, не копируя ее в папку данных пользователя? Если нет, может ли кто-нибудь придумать другой способ приблизиться к этому?


person DelMonster23    schedule 07.05.2015    source источник
comment
Нет Нет никакого способа. Это не iOS.   -  person M D    schedule 07.05.2015
comment
нет, на устройстве нет такой физической вещи, как папка с ресурсами   -  person pskink    schedule 07.05.2015
comment
Вы не можете полностью портировать iOS на Android, хотя Android предоставляет множество настроек, но есть вещи, которые Android не может сделать.   -  person Ankit Bansal    schedule 07.05.2015


Ответы (2)


Нет, вы не можете напрямую писать в файлы папки ASSETS в вашем приложении, так как папки ресурсов доступны только для чтения.

Поэтому вам необходимо сначала обязательно скопировать базу данных из папки с ресурсами на SD-карту, и только тогда вы сможете читать и записывать в нее.

person GrIsHu    schedule 07.05.2015
comment
@DerGolem Большое спасибо. :) - person GrIsHu; 07.05.2015
comment
Я полагал, что вы не можете писать в папку с ресурсами, но я надеялся, что есть какой-то способ открыть ее и прочитать из нее, но не думаю. Спасибо - person DelMonster23; 07.05.2015
comment
Проголосовали против. Он специально спрашивал про ЧТЕНИЕ из него, так что этот ответ вообще не имеет смысла. - person Iulian Onofrei; 11.09.2019

Как сказал GrIsHu, вы можете читать базу данных только из папки активов. Если вам нужно выполнить больше операций, таких как создание, обновление, удаление, вы можете сделать трюки. Скопируйте базу данных из папки с ресурсами в хранилище, а затем вы можете делать все, что хотите.

Вот краткий пример работы с предварительно созданной базой данных Android.

Существует также простая в использовании библиотека для доступа к базе данных из папки с ресурсами. Вы можете проверить [Android SQLiteAssetHelper] здесь.2 Удачи!

person Jakir Hossain    schedule 21.04.2017
comment
Проблема в том, что все ответы и руководства говорят вам скопировать его, даже если вы хотите только ЧИТАТЬ его, как сказал и ОП. - person Iulian Onofrei; 11.09.2019