Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
#1

Приложение "Рецепты", как хранить данные? - Android

22.07.2014, 11:02. Просмотров 1212. Ответов 11
Метки нет (Все метки)

Есть такой вордовский файл с рецептами.
Кликните здесь для просмотра всего текста
Голубцы с картофелем
- картофель - 4-5 шт.
- капуста - 1 кочан или 800 г
- яйцо - 1 шт.
- лук репчатый - 2 шт.
- масло сливочное - 3 ст.л.
- соус сметанный с томатом, соль - по вкусу

Из кочана капусты вырезать кочерыжку, отварить кочан до полу готовности в подсоленной воде.
Сваренный кочан капусты разобрать на листья, слегка отбить черешки. Приготовить фарш.
...

Картофель, сваренный в молоке

- картофель - 3-4 шт.
- молоко - 1.5 стакана
- лук репчатый - 1/2 луковицы
- мука - 1 ст.л.
- масло сливочное - 1 ст.л.

Картофель очистить, нарезать дольками или кубиками и варить 10 мин в воде,
после чего воду слить, залить картофель горячим молоком, варить до готовности.

Пицца с говядиной

- мука - 1 стакан
- дрожжи - 25г
- масло сливочное - 2-3 ст.л.
- сахар - 2 ч.л.
- яйцо - 2 шт.
- молоко - 1/2 стакана
- сладкий перец - 1 стручок
- майонез - 4 ст.л.

Приготовить дрожжевое тесто, раскатать и выложить на смазанный маслом противень.
Отварную говядину нарезать соломкой и выложить на тесто.
...


Хочу сделать приложение "Рецепты", вот думаю в чем лучше хранить данные. Пока реализовал в БД, но думаю про Json, может там проще?
Загвоздка в том, что нужно реализовать поиск рецептов по продуктам: например выбираем "Картофель", выйдет 1 и 2 рецепты, выберем "Яйцо" - выйдет 1 и 3, а если "Яйцо" + "Капуста", то 1.

Как сделал БД: т.Продукты (id, Продукт), т.Рецепты (id, Название, Продукты, Описание) // кол-во продуктов еще не придумал как хранить
В т.Рецепты поле Продукты сделал так: |1|5|6|8|, где цифры - id продукта из т.Продукты.
SQL запроса: "SELECT Название FROM Рецепты WHERE Продукты like '*|3|*' AND Продукты like '*|4|*' AND Продукты like '*|6|*'"
С Json еще не работал, но вижу там есть вроде все необходимое, так ли это?
И поиск по такому алгоритму там возможен?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2014, 11:02     Приложение "Рецепты", как хранить данные?
Посмотрите здесь:

Как сделать приложение полноэкранным и убрать вспомогательные кнопки "назад, главный экран." Android
Android Google Play "Приложение несовместимо с вашим устройством"
Почему приложение может пропасть из "Похожие" топового приложения? Android
Как сохранить данные при свертывании аппаратной кнопкой "Back"? Android
Android Как "подружить" внешнее устройство и приложение
Как создать "невидимое" приложение Android
Android Возможно ли программно позвонить по номеру? НЕ через Intent, а так, как это делает приложение "Телефон"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
22.07.2014, 11:23     Приложение "Рецепты", как хранить данные? #2
Rube, 3 таблицы. Продукты, рецепты, рецепт-продукт. Получится many-to-many
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
22.07.2014, 12:47  [ТС]     Приложение "Рецепты", как хранить данные? #3
YuraAAA, сделал третью таблицу Рецепт_Продукт с полями idP, idR, Количество.
Но не могу создать запрос.
Этот выдает все рецепты, где есть 4 или 6 (а надо где встречаются 4 и 6)
SQL
1
2
3
SELECT Название FROM Рецепты INNER JOIN Рецепт_Продукт ON Рецепты.id = Рецепт_Продукт.idR
WHERE Рецепт_Продукт.idP = 4 OR Рецепт_Продукт.idP = 6
GROUP BY Название;
WHERE Рецепт_Продукт.idP IN(4,6) тоже самое.
Паблито
2014 / 1756 / 546
Регистрация: 12.05.2014
Сообщений: 6,217
Завершенные тесты: 1
22.07.2014, 12:53     Приложение "Рецепты", как хранить данные? #4
я sql не знаю, но мне кажется очевидным заменить OR (или) на AND (и)
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
22.07.2014, 13:55  [ТС]     Приложение "Рецепты", как хранить данные? #5
Паблито, пробовал, тогда вообще записей не выводит.

Добавлено через 57 минут
Кое как додумался:
SQL
1
2
3
4
5
6
SELECT Рецепты.Название
FROM Рецепты INNER JOIN (Продукты INNER JOIN Рецепт_Продукт ON Продукты.id = Рецепт_Продукт.idP) ON 
Рецепты.ID = Рецепт_Продукт.idR
WHERE Продукты.ID=2 OR Продукты.ID=17
GROUP BY Рецепты.Название
HAVING COUNT(Рецепты.Название)=2;
А все же насчет Json кто-нить расскажет? Для общего развития так сказать.
YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
22.07.2014, 15:44     Приложение "Рецепты", как хранить данные? #6
Rube, можно и в JSON. Но как тогда Вы поиск реализуете-то??)
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
23.07.2014, 07:57  [ТС]     Приложение "Рецепты", как хранить данные? #7
YuraAAA, ну это и был мой главный вопрос, надеялся, что есть какие методы, типа найти "содержит" и потом вытащить родителя, как то так. В рунете мало примеров про Json, а про поиск вообще не нашел.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
26.07.2014, 22:31     Приложение "Рецепты", как хранить данные? #8
Rube, если вы планируете хоть как-то расширять свою программу (и базу данных), то JSON вам будет необходим для обмена данным между БД в приложении и БД на сервере, например. А данные хранить надо в папке assets в своей базе данных. Правда, заморочек с ней немало, это не обычно виндовое приложение с СУБД.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
27.07.2014, 11:40  [ТС]     Приложение "Рецепты", как хранить данные? #9
Что JSON для обмена данными это я знаю, функционала с сервером не будет, незачем. Данные в проекте делаю так: в assets кладу БД, при установке приложение копирует ее в databases, потом думаю надо удалять файл из assets. Если кто знает более совершенный способ, прошу написать.
А пока занимаюсь форматированием самого файла с рецептами (Word), макросом выборки названий, продуктов, рецептов и переноса их в БД (Access). Это жесть, думал быстро сделаю).
Рецепты для мультиварки)
Pljus
5 / 5 / 1
Регистрация: 15.04.2010
Сообщений: 45
27.07.2014, 21:57     Приложение "Рецепты", как хранить данные? #10
Цитата Сообщение от Rube Посмотреть сообщение
переноса их в БД (Access)
Используйте БД sqlite
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
28.07.2014, 00:53     Приложение "Рецепты", как хранить данные? #11
Rube, мыслите правильно. Я пока новичок в БД для Андроида, но понимаю работу с ними так. В APK хранится assets (или res/raw по вкусу, но эта папка обычно для других бинарников). После установки приложения на смартфон программа должна уметь копировать файл из assets в другую папку. После этого база там будет храниться постоянно, и копировать её повторно обычно нет необходимости (разве что если появится новая версия приложения с другой структурой базы). Если происходит синхронизация данных с сервера в вашу локальную базу (например, если бы вы скачивали с сервера новые рецепты), то используются JSON'ы. Причём, я пока научился тому, чтобы они скачивались каждый раз при открытии приложения. Может быть, есть и другие способы.
База данных в assets могла бы быть, в принципе, и пустой, а заполняться уже при открытии приложения, но в этом случае при отсутствии Интернета пользователь мог бы не увидеть данных, поэтому обычно в APK кладут уже базу с заполненными данными.
Перенести базу обратно в assets, а равно удалить assets нельзя, т.к. это привело бы к нарушению в целостности самого APK (ведь база "лежит" внутри этого файла).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2014, 12:51     Приложение "Рецепты", как хранить данные?
Еще ссылки по теме:

Как прикрутить "свой браузер" к странице - "фрагмент" Android
Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" Android
Как "превратить" string "6.971245e-001" во float? Android
Android Сообщение "приложение остановлено" постоянно, даже когда приложение вообще не запущено
Игровое приложение "Шашки" для мобильных устройств Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
28.07.2014, 12:51  [ТС]     Приложение "Рецепты", как хранить данные? #12
Цитата Сообщение от CoolMind Посмотреть сообщение
т.к. это привело бы к нарушению в целостности самого APK
А точно, как то я упустил этот момент
Цитата Сообщение от Pljus Посмотреть сообщение
Используйте БД sqlite
Что значит используйте? Она у меня и так используется в приложении, про Access я имел ввиду на ББ предварительные работы провести.
Yandex
Объявления
28.07.2014, 12:51     Приложение "Рецепты", как хранить данные?
Ответ Создать тему
Опции темы

Текущее время: 13:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru