2010-08-04 2 views
1

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

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

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

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

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

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

  • скопировать файл АПК на мой телефон

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

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

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

ответ

2

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

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

Я тогда нашел this page здесь, на переполнении стека, который указывает, насколько простым может быть код.

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

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

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

1

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

протирать Database Clean при запуске на эмуляторе:
Нажмите на стрелку вниз рядом с кнопкой воспроизведения в затмении
Выберите Run Configurations
Нажмите Target Tab
Установите флажок «Протрите данных пользователя» alt text http://www.freeimagehosting.net/uploads/fe7250b026.png

+0

Спасибо за ваш быстрый ответ! Запускает ли приложение приложение на телефоне прямо из Eclipse стереть существующую базу данных из папки данных приложения во внутренней памяти телефона? Я обнаружил, что при использовании эмулятора мне приходится вручную стереть данные. – prepbgg

+0

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

+0

Спасибо. Вероятно, это флажок, который я ищу. Хотел бы я знать, как его найти! Тем не менее, я все равно останусь со всеми другими утомительными шагами, перечисленными в моем исходном сообщении, когда я хочу обновить базу данных. Возможно, мне удастся написать код в моем приложении, чтобы добавить пункт меню, чтобы заблокировать отдельную таблицу и прочитать новые данные из файла на SD-карте. Должен быть, конечно, способ обновления данных без прохождения Eclipse? – prepbgg

Смежные вопросы