Android и довольно большие файлы данных SQLite - PullRequest
1 голос
/ 17 января 2011

Я запускаю проект Android, порт из существующего проекта iPhone, который я завершил.

У меня довольно большая база данных SQLite только для чтения, всего около 100 МБ.Это называется "mydata.sqlite".Где я могу разместить это в моем рабочем пространстве Eclipse?Он слишком велик для "активов".

Далее, как мне лучше всего получить файл?Я хотел бы попробовать (обработка исключений позже) что-то вроде:

SQLiteDatabase myDatabase = null;
myDatabase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);

Но тогда мне понадобится строка пути myPath, и так как я не знаю, куда поместить ресурс, я не знаючто это должно быть.

Могу ли я поместить "mydata.sqlite" в "res / raw" (когда я создаю "raw" в Eclipse?) и затем ссылаться на него как на ресурс с помощью "R.raw.mydata "?

Я был бы очень признателен за прямую помощь, а не за ссылку на учебник.Я проверил тонны из них, включая те, которые уже упоминались здесь на stackoverflow.Я также прошел проект «Блокнот» в документах для разработчиков Android.Однако они и документация обычно рассматривают только новые, пустые или небольшие базы данных, которые не всегда являются постоянными.Это должно быть простым делом, и, учитывая время, которое я уже потратил, его, возможно, легче спросить.

Заранее благодарю за помощь.

Ответы [ 3 ]

1 голос
/ 17 января 2011

Обратите внимание, что если вы добавляете ресурс размером 100 МБ в ваш .apk, вы получите приложение, которое слишком велико для публикации на Маркете.

1 голос
/ 17 января 2011

Я никогда раньше не пытался включить такую ​​большую БД в свое приложение.

Одним из решений вашего вопроса может быть переименование вашего mydata.sqlite в нечто вроде mydata.jpg, чтобы избежать сжатия файлаaapt, который после того, как вы можете поместить его в папку активов и получить к нему доступ оттуда.

Любой сжатый файл активов с несжатым размером более 1 МБ не может быть прочитан из APK. [источник]

Редактировать: Похоже, что сейчас вам лучше всего получать данные небольшими порциями с веб-сервера при необходимости?Обнаружил this , ознакомьтесь с решением mjc147, и Romain Guy из Google объясняет ограничение 1 Мб.

0 голосов
/ 17 января 2011

Я сделал это один раз с базой данных SQLite 35 МБ. Что я сделал:

1.) Я использовал инструмент Windows (кажется, это был TotalCommander), чтобы разбить этот файл * .db на куски по 1 МБ.

2.) Я поместил их в папку ресурсов.

3.) В своем классе помощников по базам данных я переместил эти части вместе при первом запуске.

Работало отлично и было достаточно быстро.

О чем стоит подумать:

1.) В какой-то момент у вас есть 3 * 50 МБ при запуске на внутреннем хранилище, поэтому рассмотрите возможность использования SD-карты для вашей базы данных.

2.) В какой-то момент во время обновления ваших приложений у вас есть 4 * 50 МБ на вашем устройстве ...

С уважением hjw

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