Запрос SQLite ничего не возвращает

#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);