Как обновить базу данных, используемую в качестве источника данных для приложения Android - PullRequest
1 голос
/ 04 августа 2010

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

Процедура, которой я следую, когда хочудобавить новые данные следующим образом:

  • Я ввожу новые данные в CSV-файл, который я сохраняю как источник соответствующей таблицы в базе данных

  • Я использую SQLite Database Browser для импорта данных в существующую базу данных SQLite.(Эта программа, по-видимому, не имеет возможности добавлять импортированные данные в существующую таблицу, поэтому всякий раз, когда требуется обновить таблицу, мне приходится удалять существующую таблицу, затем импортировать данные из файла csv в новую таблицу, а затем вручную редактировать данныетипы для всех полей в таблице.)

  • Я перетаскиваю значок для файла базы данных в папку «assets» моего проекта в Eclipse.

  • Я экспортирую проект из Eclipse в виде файла apk.

  • Я копирую файл apk на свой телефон

  • (с помощью AstroДиспетчер файлов) Я удаляю старую версию приложения и устанавливаю новый apk.

  • при запуске приложения, код, основанный на примере, изложен здесь копийданные из папки 'assets' в папку данных приложения;это означает, что каждый байт данных занимает два байта во внутренней памяти телефона;в настоящее время это не проблема, но может быть по мере роста объема данных;Интересно, есть ли более эффективный метод памяти?

Буду очень признателен за любые рекомендации.

Ответы [ 2 ]

2 голосов
/ 09 августа 2010

Я обнаружил, что могу иметь базу данных SQLite на SD-карте, что значительно упрощает для меня (и уменьшает объем внутренней памяти, занимаемой моим приложением).

Первой подсказкой был этот блог , в котором говорилось, что возможно (вопреки впечатлению, которое я получил от документации Android и от моего предыдущего поиска в Google) приложение для ссылки на базу данных на SD-карта.

Затем я нашел эту страницу здесь, в Переполнении стека, которая указывает, насколько простым может быть код.

С помощью рекомендаций на этих страницах у меня теперь есть намного более простой код DBHelper в моем приложении, где метод openDataBase () просто читается следующим образом:

public void openDataBase() throws SQLException{<br> File dbfile = new File(DB_PATH + DB_NAME); myDataBase = SQLiteDatabase.openOrCreateDatabase(dbfile, null); }

Больше нет необходимости включать базу данных в «активы» моего проекта и, следовательно, включать ее в файл apk. И большое преимущество заключается в том, что база данных может обновляться без необходимости заходить где-либо рядом с Eclipse, не говоря уже о переустановке приложения.

1 голос
/ 04 августа 2010

Я действительно не знаю о базе данных, но знаю, что если в eclipse вы запустите приложение на своем телефоне, оно автоматически установит его. Поэтому вместо того, чтобы запускать его в эмуляторе при нажатии кнопки воспроизведения, запустите его на своем телефоне, и многие из этих шагов будут исключены.

Для очистки базы данных при запуске на эмуляторе:
Нажмите стрелку вниз рядом с кнопкой воспроизведения в eclipse
Выберите Run Configurations
Нажмите вкладку цели
Установите флажок «Wipe User Data» альтернативный текст http://www.freeimagehosting.net/uploads/fe7250b026.png

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