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

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

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

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

22.07.2014, 11:02. Просмотров 1289. Ответов 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
Как создать "невидимое" приложение Android
Android Возможно ли программно позвонить по номеру? НЕ через Intent, а так, как это делает приложение "Телефон"
Android Кнопка "Стереть данные", как от нее защититься?
Как сохранить данные при свертывании аппаратной кнопкой "Back"? Android
Почему приложение может пропасть из "Похожие" топового приложения? Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1566 / 1308 / 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) тоже самое.
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 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
1566 / 1308 / 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 Google Play "Приложение несовместимо с вашим устройством"
Android Приложение обои - Сделать выплывающее меню при "чиркании" пальцем
Android Попытка "упаковать" веб-приложение в apk
Простейшее приложение: "Напоминалка о событии" 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     Приложение "Рецепты", как хранить данные?
Ответ Создать тему
Опции темы

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