Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

22.07.2014, 11:02. Просмотров 1565. Ответов 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 еще не работал, но вижу там есть вроде все необходимое, так ли это?
И поиск по такому алгоритму там возможен?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2014, 11:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Приложение "Рецепты", как хранить данные? (Программирование Android):

Как "подружить" внешнее устройство и приложение - Программирование Android
Добрый вечер, друзья! Помогите, суть вопроса ниже: Представим что: Есть устройство, подключаемое через micro usb (Lightning в...

Сообщение "приложение остановлено" постоянно, даже когда приложение вообще не запущено - Программирование Android
Собственно ,сабж в топике

Как сделать приложение полноэкранным и убрать вспомогательные кнопки "назад, главный экран." - Программирование Android
Здравствуйте, Можно ли сделать приложение на весь экран, и убрать от туда вспомогательные кнопки "Назад, Главное окно..." или же хотя бы...

Как создать "невидимое" приложение - Программирование Android
Здравствуйте. Недавно увидел в Play Market приложение, которое было невозможно открыть. Т.е. в диспечере приложений оно отображалось, а в...

Возможно ли программно позвонить по номеру? НЕ через Intent, а так, как это делает приложение "Телефон" - Программирование Android
... Добавлено через 1 минуту Ну то есть нажал кнопку - соединился - слушаешь из динамика, говоришь в микрофон. Нажал другую кнопку -...

Кнопка "Стереть данные", как от нее защититься? - Программирование Android
В настройках приложения есть кнопка "Стереть данные", она удаляет все данные (в том числе и sql) приложения. 1 Есть ли способ...

11
YuraAAA
1578 / 1319 / 271
Регистрация: 25.10.2009
Сообщений: 3,437
Записей в блоге: 2
22.07.2014, 11:23 #2
Rube, 3 таблицы. Продукты, рецепты, рецепт-продукт. Получится many-to-many
2
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
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) тоже самое.
0
Pablito
2631 / 2113 / 656
Регистрация: 12.05.2014
Сообщений: 7,395
Завершенные тесты: 1
22.07.2014, 12:53 #4
я sql не знаю, но мне кажется очевидным заменить OR (или) на AND (и)
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
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 кто-нить расскажет? Для общего развития так сказать.
0
YuraAAA
1578 / 1319 / 271
Регистрация: 25.10.2009
Сообщений: 3,437
Записей в блоге: 2
22.07.2014, 15:44 #6
Rube, можно и в JSON. Но как тогда Вы поиск реализуете-то??)
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
23.07.2014, 07:57  [ТС] #7
YuraAAA, ну это и был мой главный вопрос, надеялся, что есть какие методы, типа найти "содержит" и потом вытащить родителя, как то так. В рунете мало примеров про Json, а про поиск вообще не нашел.
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,733
26.07.2014, 22:31 #8
Rube, если вы планируете хоть как-то расширять свою программу (и базу данных), то JSON вам будет необходим для обмена данным между БД в приложении и БД на сервере, например. А данные хранить надо в папке assets в своей базе данных. Правда, заморочек с ней немало, это не обычно виндовое приложение с СУБД.
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
27.07.2014, 11:40  [ТС] #9
Что JSON для обмена данными это я знаю, функционала с сервером не будет, незачем. Данные в проекте делаю так: в assets кладу БД, при установке приложение копирует ее в databases, потом думаю надо удалять файл из assets. Если кто знает более совершенный способ, прошу написать.
А пока занимаюсь форматированием самого файла с рецептами (Word), макросом выборки названий, продуктов, рецептов и переноса их в БД (Access). Это жесть, думал быстро сделаю).
Рецепты для мультиварки)
1
Pljus
5 / 5 / 1
Регистрация: 15.04.2010
Сообщений: 45
27.07.2014, 21:57 #10
Цитата Сообщение от Rube Посмотреть сообщение
переноса их в БД (Access)
Используйте БД sqlite
1
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,733
28.07.2014, 00:53 #11
Rube, мыслите правильно. Я пока новичок в БД для Андроида, но понимаю работу с ними так. В APK хранится assets (или res/raw по вкусу, но эта папка обычно для других бинарников). После установки приложения на смартфон программа должна уметь копировать файл из assets в другую папку. После этого база там будет храниться постоянно, и копировать её повторно обычно нет необходимости (разве что если появится новая версия приложения с другой структурой базы). Если происходит синхронизация данных с сервера в вашу локальную базу (например, если бы вы скачивали с сервера новые рецепты), то используются JSON'ы. Причём, я пока научился тому, чтобы они скачивались каждый раз при открытии приложения. Может быть, есть и другие способы.
База данных в assets могла бы быть, в принципе, и пустой, а заполняться уже при открытии приложения, но в этом случае при отсутствии Интернета пользователь мог бы не увидеть данных, поэтому обычно в APK кладут уже базу с заполненными данными.
Перенести базу обратно в assets, а равно удалить assets нельзя, т.к. это привело бы к нарушению в целостности самого APK (ведь база "лежит" внутри этого файла).
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
28.07.2014, 12:51  [ТС] #12
Цитата Сообщение от CoolMind Посмотреть сообщение
т.к. это привело бы к нарушению в целостности самого APK
А точно, как то я упустил этот момент
Цитата Сообщение от Pljus Посмотреть сообщение
Используйте БД sqlite
Что значит используйте? Она у меня и так используется в приложении, про Access я имел ввиду на ББ предварительные работы провести.
0
28.07.2014, 12:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2014, 12:51
Привет! Вот еще темы с ответами:

Как сохранить данные при свертывании аппаратной кнопкой "Back"? - Программирование Android
Здравствуйте. Подскажите пожалуйста, как сохранить данные при нажатии аппаратной кнопки back в главном активити? Мне бы в идеале хотелось...

Как "расшифровать" данные файлы? - Программирование Android
Я взял готовые спрайты с одной игры! Я же не знаю, как их открыть/изменить Так-же они помечены, как неизвестные файлы. В свойствах у...

Как прикрутить "свой браузер" к странице - "фрагмент" - Программирование Android
здравствуйте. все, уже голову сломал. не соображаю совсем. не получается прикрутить код браузера к странице fragments.выводиться должно на-...

Как "превратить" string "6.971245e-001" во float? - Программирование Android
Число конечно пример


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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