У меня есть база данных с несколькими таблицами. Одна из этих таблиц (спорт) - это то место, где я должен поставить статический список объектов, каждый из которых имеет _id, name, logo и int. _id будет использоваться другими таблицами для выполнения некоторых запросов (например, выбрать из «таблицы X», где sport_id = _id), поэтому он не должен изменять сверхурочную работу (есть ли способ обновить всю ссылку на этот _id, если он будет изменение?). Где я должен поместить код (я думаю, что это будет простой список db.insertSport()), чтобы добавить эту строку только один раз (и проверить, растет ли число строк, чтобы добавить новые)? Не будет большого количества строк, 50 в лучшем случае.Заполнение SQLiteDatabase в Android со статическими данными
ответ
Я думаю, что я бы сделал метод в dbHelper, чтобы вставить эти данные, а затем вызовите этот метод сразу после запуска приложения. Я делаю несколько предположений здесь ... сначала, что вы отправляете эту статическую информацию с приложением, и когда вы хотите добавить дополнительную информацию, вы будете отправлять новую версию.
Вы можете сохранить данные в виде текстового файла в папке с вашими активами, а затем прочитать файл в исполняемом пакете в методе.
Если вы установите его право (используйте insertWithOnConflict
и CONFLICT_IGNORE
флаг в методе) будет только добавлять новые строки (если таковые имеются) каждый раз, так что вы можете запустить его каждый раз при запуске приложения и не беспокоиться о дубликата данных или сбоев за нарушения ограничений.
Если вы хотите, чтобы он запускался один раз, а затем снова, когда есть дополнительная информация, поместите номер версии в текстовый файл и проверьте его на предыдущий (который вы можете сохранить в SharedPreferences).
РЕДАКТИРОВАТЬ
Пример использования insertWithOnConflict:
public long createItem(String yourdata) {
ContentValues initialValues = new ContentValues();
initialValues.put(YOUR_COLUMN, yourdata);
return mDb.insertWithOnConflict(YOUR_TABLE, null, initialValues,
SQLiteDatabase.CONFLICT_IGNORE);
}
Вы можете прочитать о классе SQLiteDatabase (который имеет константы и методы) here
ВставитьWithOnConflict - лучшее решение. Я не знаю, куда его поместить. В первом действии приложения? Или MAYBE в onCreate() базы данных? –
Вы должны использовать его в методе в классе dbHelper. Я отредактировал свой ответ, чтобы дать вам толчок в правильном направлении. – Barak
Хорошо, извините, я уже добрался до этой части, я не понимаю, когда звонить createItem(). Внутри SQLiteOpenHelper onCreate() хорошо? –
- 1. ионные вкладки со статическими данными
- 2. Связывание перечислений со статическими данными
- 3. Binding сетки со статическими данными
- 4. jqgrid со статическими данными в asp.net
- 5. Заполнение нескольких выпадающих меню со статическими значениями
- 6. Лучший способ загрузить jqGrid со статическими данными?
- 7. это хорошая идея со статическими данными
- 8. Каскадное выпадающее меню со статическими данными
- 9. Matplotlib RegularPolyCollection со статическими (данными) размерами?
- 10. Инициализация модели StreamingKmeans со статическими данными обучения
- 11. Проблема с WCF Service со статическими данными
- 12. Tableview не прокрутка гладко со статическими данными
- 13. Экземпляр сетки Extjs 5.0 со статическими данными
- 14. Заполнение выпадающего списка со статическими значениями в odoo 8
- 15. JComboBox со статическими параметрами
- 16. Заполнение Android ListView данными MySQL
- 17. Заполнение таблицы MySQL со скребковыми данными
- 18. Комбобокс со статическими и динамическими данными вместе в wpf
- 19. Работа со статическими и динамическими данными в angularjs
- 20. Как создать файл sqlite3 .db со статическими данными в Windows?
- 21. Grails: управление статическими данными
- 22. Управление статическими данными в WCF
- 23. Android SQLitedatabase
- 24. Android Layouts-Mixing dynamic со статическими элементами
- 25. Разработка проекта Android со статическими библиотеками?
- 26. Android ExpandableList со статическими элементами/без адаптера
- 27. синхронизация перечисление со статическими данными из базы данных
- 28. AngularJS pre-render (cache) Вид контроллера со статическими данными
- 29. Когда сборка мусора происходит для класса со статическими данными
- 30. Как предварительно заполнить AutoModelSelect2Field со статическими данными? (Джанго-Выбор2 библиотека)
«(это есть способ обновить всю ссылку на этот _id, если он изменится?) «Не меняйте идентификатор. Это плохая практика базы данных, чтобы иметь уникальное изменение идентификатора. –
Это было в том случае, когда по каким-то причинам (неизвестно мне) _ids меняются. Как я могу автоматически изменить ссылку на эту таблицу в других таблицах? (это вопрос sqlite noob) –
Глядя на ответ ниже, ответ Барака хорош. Вы действительно не сможете автоматически изменить ссылку, поэтому, чтобы вы не беспокоились об изменении идентификатора в первую очередь, создайте уникальный индекс в столбце таблицы Name. Затем, с предложением Барака, используйте функцию игнорирования вставки db.execSQL («СОЗДАТЬ УНИКАЛЬНЫЙ ИНДЕКС РАЗЛИЧНОГО НА спорт (имя)»); Что-то в этом роде, у меня нет приложения SQLite или Android, чтобы протестировать его прямо сейчас, так что вам может понадобиться немного его настроить. –