получение MAX из content provider

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
Idol
Сообщения: 55
Зарегистрирован: 26 июн 2013, 04:33

получение MAX из content provider

Сообщение Idol » 09 авг 2013, 01:47

Необходимо получить максимум из определенной колонки таблицы. Существует метод типа:

Код: Выделить всё

final String[] PROJECTION = new String[] { "MAX(" + drillsetColumns.DRILLSET_ORDER_N + ") as max_orderN" };
		String arg = Long.toString(drill_id);
		Cursor cursor = getContentResolver().query(drillsetColumns.CONTENT_URI, PROJECTION,
				drillsetColumns.ID_DRILL + "=?", new String[] { arg }, null);
Однако, хотелось бы все это запихнуть внутрь К.провайдера и вызывать через определенный Uri, как хранимую процедуру.
Если у кого есть опыт или ссылка на подобную схему (не обязательно нахождение MAX) поделитесь, пожалуйста.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: получение MAX из content provider

Сообщение Foenix » 04 сен 2013, 12:05

ну давай разбираться, только я не совсем поняла что требуется? У тебя в примере и есть пример вызова метода к.п. Соответственно в нем все и обрабатывается по drillsetColumns.CONTENT_URI
В том-то и дело, что с к.п. все вот так вот громоздко вызвается, можно сделать чуть понятнее, но можно в этом разобраться и к этому привыкнуть..
С моей т.з. код получается труднее читаемым.. но что поделать..
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Idol
Сообщения: 55
Зарегистрирован: 26 июн 2013, 04:33

Re: получение MAX из content provider

Сообщение Idol » 05 сен 2013, 00:23

Foenix,
Спасибо за твое участие.

В идеале все детали запроса правильнее было бы запихнуть внутрь КП. К примеру, оператор МАХ не должен фигурировать в коде программы. Т.е. обращение идет по uri типа .../max_price и все. Теоретически это возможно, но практической реализации мне найти в инете не удалось (у самого времени нет пока). Я надеюсь, что в куче созданых тобой методов есть что-либо подобное.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: получение MAX из content provider

Сообщение Foenix » 05 сен 2013, 00:29

кто тебе такое сказал "не должен" и так далее?
именно так и делается, посмотри примеры, туториалы на серьезных источниках.

Мне самой это не особо нравится, но я прихожу к выводу, что андроид вообще не приспособен хоть к сколь серьезной работе с базами данных, т.к. он не для этого вообще предназначен, так.. просмотреть 1 табличку и какой-то простенький запрос обработать, нагородя кучу кода при этом, и все.
Сказать по-честному, я делаю простыми запросами типа rawquery , потому как мне так понятней и нет никаких этих кодов как в твоем примере, выглядящих как шифровка. Но это, я уверена, не аутентичненько.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: получение MAX из content provider

Сообщение Foenix » 05 сен 2013, 00:33

и я в другой теме говорила, что да, теперь в коде программы "фигурирует" не только макс, но и куча другого кода, которая не осоставляет основу логичного алгоритма, с к.п. появляется повторяющиеся блоки кода, совершенно как бы не уместного там. Поэтому тут логично сделать класс надстройку, в который все это спрятать. Мне нравится больше, когда вызов идет лишь 1 строка с наименованеием какого-нибудь логичного метода, возвращающего или курсор или где нужно единичногго значения того же макса.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Idol
Сообщения: 55
Зарегистрирован: 26 июн 2013, 04:33

Re: получение MAX из content provider

Сообщение Idol » 06 сен 2013, 01:26

В принципе во всем с тобой согласен.
Проясни одну вещь, ты используешь rawquery с КП? Если да, то скинь какой-нибудь простой пример, пожалуйста.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: получение MAX из content provider

Сообщение Foenix » 06 сен 2013, 18:18

вечером постараюсь сделать.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: получение MAX из content provider

Сообщение Foenix » 06 сен 2013, 23:15

cSQL - Это запрос.

cursor = getActivity().getContentResolver().query(uri, null, cSQL, null, null);

ну и там в провайдере дело в шляпе
return mDb.rawQuery(cSQL, null);
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Ответить