#android #sqlite
#Android #sqlite
Вопрос:
У меня есть этот запрос в SQLite, который я хочу вернуть значение на основе переданной даты. Дата находится в базе данных в виде строки. Я знаю, что в базе данных есть данные с этой датой, но они просто ничего не возвращают. Я не знаю, почему. Когда я выполняю запрос без параметров сравнения, он возвращает все данные в обычном режиме, но при использовании предложения WHERE в методе запроса он перестает возвращаться. Возможно, это просто вопрос синтаксиса SQL. В любом случае, вот утверждение:
Cursor cursor = db.query(TABLE, new String[] {"_id", "value"}, "current_date = ? ", new String[] {date}, null, null, null);
Редактировать
Я сделал этот запрос в браузере базы данных SQLite, и он не возвращает никаких значений. Даже если он есть.
Я видел, что это довольно забавно и запутанно. Я тестировал в браузере базы данных, а также на телефоне, когда я пропускаю текущий день, день «Сегодня», он получает данные, но когда я пропускаю другой день, который не сегодня, он ничего не возвращает. Очень, очень странно.
И в браузере базы данных я выбрал столбец, содержащий дату, и он возвращает только дату «Сегодня», даже если раньше были другие даты.
Комментарии:
1.
new String[] {"_id, value"}
— вы, вероятно, хотитеnew String[] {"_id", "value"}
вместо этого. Если это не решит проблему, пожалуйста, сообщите, какоеdate
именно значение имеет и что находится в базе данных.2. оба формата (входящий и в базе данных) находятся в этом формате гггг-мм-дд. Я исправил эту проблему, но не решил.
Ответ №1:
если ваша дата хранится в базе данных в формате ‘дд-мм-гггг’, попробуйте использовать ее как-
Calendar cal=Calendar.getInstance();
Cursor cursor = db.query(TABLE, new String[] {"_id", "value"}, "date = ? ", String.format("%1$td-%1$tm-%1$tY",cal), null, null, null);
Для других форматов, пожалуйста, обратитесь http://download.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html
Ответ №2:
Имя столбца было ‘current_date’, и это имя функции SQLite. Таким образом, он не получил другие даты, только текущую дату.
Комментарии:
1. Тогда вы либо написали неправильный запрос в своем приложении, либо это была просто опечатка. в вашем вопросе это был Cursor cursor = db.query(ТАБЛИЦА, новая строка[] {«_id», «value»}, «date = ? «, новая строка[] {дата}, null, null, null);