Урок 36. SQLite. Подробнее про метод query. Условие, сортировка, группировка

Обсуждение уроков
_ILYA_
Сообщения: 41
Зарегистрирован: 06 окт 2013, 11:49

Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение _ILYA_ » 05 фев 2014, 00:07

извините затупил :x

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

Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение Foenix » 05 фев 2014, 00:46

не нужны там кавычки
почему падает СМОТРИ В ЛОГЕ!
R.id.team

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

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение altwin » 05 фев 2014, 00:56

Foenix писал(а):не нужны там кавычки
почему падает СМОТРИ В ЛОГЕ!
типо я совсем баран? :) COLUMN_YEAR - строковая константа, такого поля в базе нет( valueOf(COLUMN_YEAR)= 2014 ). Там очень нужны кавычки ;)
Иногда нужно отдыхать.. :)
Изображение

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

Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение Foenix » 05 фев 2014, 06:37

ну да, я ж не отредактированный вопрос видела, где этой глупой фразы, что ГОД - это СТРОКА я не видела и предположить не могла. Спрашивается - зачем????
R.id.team

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

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение altwin » 05 фев 2014, 10:25

Foenix писал(а):ну да, я ж не отредактированный вопрос видела, где этой глупой фразы, что ГОД - это СТРОКА я не видела и предположить не могла. Спрашивается - зачем????
это уже другой вопрос :)
Изображение

_ILYA_
Сообщения: 41
Зарегистрирован: 06 окт 2013, 11:49

Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение _ILYA_ » 06 фев 2014, 21:59

позвольте еще два вопроса.
1.как получить разные значения MONTH?
я так сделал:

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

public Cursor getMonths(String year)
	{
		String _sql = "select distinct " + COLUMN_MONTH + " from " + DB_TABLE + 
				" order by " + COLUMN_MONTH + " desc";
		return m_db.rawQuery(_sql, null);
	} 
все работает. Но может так криво? (я сейчас не про формат даты)


2. в таблице есть столбец REAL V. Как получить сумму V за каждый месяц? Метод rawQuery() возвращает Cursor, и как туда запихнуть сумму?

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

Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение Foenix » 07 фев 2014, 06:57

1. нормально
2. в sqlite нет такого типа real. Я ссылку давала, или ищи в гугле
3. как из курсора получить число - смотри в уроках. Как просуммировать - запросом, конечно же. ЛЮбые методы, выполняющие запросы в результате получают курсор.
R.id.team

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

_ILYA_
Сообщения: 41
Зарегистрирован: 06 окт 2013, 11:49

Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение _ILYA_ » 07 фев 2014, 19:58

в sqlite нет такого типа real
а тут http://developer.alexanderklimov.ru/and ... sqlite.php вот что написано :

SQLite поддерживает типы TEXT (аналог String в Java), INTEGER (аналог long в Java) и REAL (аналог double в Java). Остальные типы следует конвертировать, прежде чем сохранять в базе данных. SQLite сама по себе не проверяет типы данных, поэтому вы можете записать целое число в колонку, предназначенную для строк и наоборот.

Тип Описание
NULL пустое значение
INTEGER целочисленное значение
REAL значение с плавающей точкой
TEXT строки или символы в кодировке UTF-8, UTF-16BE или UTF-16LE
BLOB бинарные данные
я и сам на практике проверил, ни каких ошибок.
как из курсора получить число - смотри в урока
как получить число я знаю, но ведь в моей таблице изначально не столбца сумма. Тут я ни как не соображу.
Может надо создавать временную таблицу со столбцами: год, месяц сумма?

ни как не соображу гугл то же особо не помог.

мне нужен список, содержащий пункты; меся, год и сумма за этот месяц

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

Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение Foenix » 07 фев 2014, 21:15

Про real да, затупила спросонья, прости
но если у тебя там деньги, то оно мало подходит для хранения денежных сумм
столбец сумма получается запросом
select sum(DDD) as summa from ...
если суммировать нужно по какому-то параметру, например, двум полям одновременно, то в конце запроса добавляешь group by POLE1,POLE2
если это имеется ввиду.
R.id.team

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

_ILYA_
Сообщения: 41
Зарегистрирован: 06 окт 2013, 11:49

Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение _ILYA_ » 07 фев 2014, 22:07

Про real да, затупила спросонья, прости
но если у тебя там деньги, то оно мало подходит для хранения денежных сумм
Да ни чего, бывает.
а что подходит?

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

Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение Foenix » 07 фев 2014, 22:26

я в целых храню
R.id.team

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

_ILYA_
Сообщения: 41
Зарегистрирован: 06 окт 2013, 11:49

Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение _ILYA_ » 07 фев 2014, 23:23

ни как не получается.
таблица со столбцами COLUMN_YEAR COLUMN_MONTH COLUMN_DAY. Так же есть список ListView. В каждом пункте списка отображается: месяц, год(дни не надо) и сумма за этот месяц. Должно выводится в порядке убывания дат.
Со всем кроме суммы разобрался все работает. Добавил сумму, приложение падает

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

public Cursor getMonths(String year)
	{
		String _sql = "select sum(" + COLUMN_MONEY + ") as " + TOTAL_SUM + ", distinct " + COLUMN_MONTH +
				" from " + DB_TABLE + 
				" where " + COLUMN_YEAR + "=" + year +
				" order by " + COLUMN_MONTH + " desc";
		return m_db.rawQuery(_sql, null);
	} 

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

Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение Foenix » 07 фев 2014, 23:26

потому, что они у тебя строковые. Я же сказала - убери эту глупость и сделай правильно.
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: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение Foenix » 07 фев 2014, 23:28

:twisted: :twisted: :twisted: :twisted: а почему падает В ЛОГЕ НАПИСАНО!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
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: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение Foenix » 07 фев 2014, 23:29

и запрос у тебя - у меня даже слов нет. Я же сказала как делать!!
R.id.team

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

_ILYA_
Сообщения: 41
Зарегистрирован: 06 окт 2013, 11:49

Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение _ILYA_ » 07 фев 2014, 23:31

Foenix писал(а):и запрос у тебя - у меня даже слов нет. Я же сказала как делать!!
ни как не соображу как это все собрать. То есть у меня в синтаксисе SQL ошибки?

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

Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение Foenix » 07 фев 2014, 23:40

я все написала.
R.id.team

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

_ILYA_
Сообщения: 41
Зарегистрирован: 06 окт 2013, 11:49

Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение _ILYA_ » 08 фев 2014, 00:03

а можно пример в коде?

_ILYA_
Сообщения: 41
Зарегистрирован: 06 окт 2013, 11:49

Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение _ILYA_ » 08 фев 2014, 21:18

вроде разобрался, может и криво сделал, но работает

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

public Cursor getMonths(String year)
	{
		String _sql = "select " + COLUMN_ID + ", " + COLUMN_YEAR + ", " + COLUMN_MONTH +
				", sum(" + COLUMN_MONEY + ") as "+ TOTAL_SUM +
				" from " + DB_TABLE + 
				" where " + COLUMN_YEAR + "=" + year +
				" group by " + COLUMN_MONTH +", " + COLUMN_YEAR;
				
		return m_db.rawQuery(_sql, null);
	} 

_ILYA_
Сообщения: 41
Зарегистрирован: 06 окт 2013, 11:49

Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор

Сообщение _ILYA_ » 23 фев 2014, 21:10

какое исключение выбрасывается при не правильном синтаксисе SQL запроса

Ответить