доступ к базе данных .sqlite (> 1 МБ) в Android - PullRequest
1 голос
/ 15 мая 2011

Я работаю над приложением библиотеки и храню книги в виде файлов .sqlite.Файл базы данных sqlite каждой книги имеет размер около 10 МБ.Сначала я попытался поместить его в папку активов, а затем скопировать в базу данных / папку, но, поскольку размер файла превышает 1 МБ, это дает мне исключение IOException.Затем я попытался получить к нему доступ из необработанной папки, но это все еще дает мне IOException.Итак, как правильно получить доступ к такому файлу.Кроме того, в будущем приложению может потребоваться загрузить такие файлы с сервера, поэтому в таком случае где мне хранить такие файлы базы данных?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 15 мая 2011

До Android 3.0 вам не разрешается открывать файлы размером более 1 МБ .

. По ссылке: [P] rior to Android 2.3, любой сжатый файл активов с несжатым размеромиз APK невозможно прочитать более 1 МБ.

Вот некоторые решения:

  1. Возможно, вы хотите уменьшить размер баз данных, и это может бытьсделав свой собственный, или удалив некоторые записи, которые вам не нужны / не нужны.

  2. Другое решение - выгрузить базы данных на сервер, к которому у вас есть доступ и который требуетсяприложение для доступа к сети, чтобы получить данные, которые необходимы с этого сервера.Я могу представить хороший RESTful API для этого.

0 голосов
/ 15 мая 2011

Сделайте так, чтобы приложение загружало базу данных с веб-сервера на SD-карту - это экономит трату времени на хранение как сжатой версии в .apk, так и несжатой версии снаружи.И на самом деле это не более небезопасно, поскольку .apk - это просто zip-файл, который каждый, кто действительно хочет, может прочитать.

0 голосов
/ 15 мая 2011

Существует решение этой проблемы. Ограничение в 1 МБ распространяется только на файлы SQLite, а не на файлы других типов. Переименуйте ваш файл SQLite как что-то вроде «db.mp3», а затем, когда ваше приложение запускается, вы можете скопировать этот файл на вашу SD-карту и использовать его как обычный файл SQLite с SD-карты. Я реализовал это решение, и оно отлично работает на всех версиях Android.

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