0

Цель

Я хотел бы задать пару вопросов относительно реализации решения для Android-приложения.Хорошая практика SQLite & ContentProvider

Контекст

У нас есть SQLite базы данных для нашего приложения. Мы также используем ContentProvider, чтобы легко управлять изменениями в данных базы данных и получать уведомления, когда это произойдет.

Приложение имеет Activity, которое содержит ViewPager с 4 Fragment. 2 из этих 4 Fragment используют общие данные.

Выпуск

Допустим, мы храним данные кредитных карт пользователя. У него может быть несколько карт, сохраненных в базе данных, поэтому нам нужно знать, какой из них активен.

Я мог только подумать о 2 решениях для этого.

  1. Сохранить его на Preferences
  2. Добавить активное поле в таблице кредитной карты

Пример 2 решения:

╔════════════════╦═════════════╦═══════════════╦════════╗ 
║  name  ║  id  ║ secret_number ║ active ║ 
╠════════════════╬═════════════╬═══════════════╬════════╣ 
║ personal visa ║ 02468024680 ║   659 ║ true ║ 
║ company visa ║ 13579135791 ║   362 ║ false ║ 
╚════════════════╩═════════════╩═══════════════╩════════╝ 

Я думаю, что второй из них лучше, так как ContentProvider уведомит наш Fragments, когда действует акт карта ive изменена, и они смогут отражать изменения в этот момент.

Вопросы

Однако, я не уверен, если это находится в пределах good practices, так как это может привести к проблемам, например, наличие нескольких строк, помеченных как активного. Кроме того, я также хотел бы спросить, есть ли способ обновить все строки с помощью одного оператора sql, я имею в виду, active, а остальные - false.

Заранее спасибо.

+1

Привет, добро пожаловать к переполнению стека. SO - это платформа Q & A для программирования, а не дискуссионный форум. Пожалуйста, прочтите это сначала: http://stackoverflow.com/help/on-topic –

ответ

1

Как только я нашел способ обновить все строки сразу, я собираюсь для этого.

Я просто должен использовать заявление CASE WHEN ... THEN ... ELSE ... END, которое я забыл, что он существует!

Нашел here

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