База данных Android (SQLite) возвращает непустой курсор из пустой таблицы - PullRequest
4 голосов
/ 23 января 2011

Я проверил с помощью браузера баз данных SQLite, что таблица не содержит строк. Я прошел по коду построителя запросов, чтобы получить сгенерированный запрос, и запустил запрос в SQLite Database Broswer. Запрос вернул ноль строк. Но все же курсор, возвращаемый Android-методом SQLiteQueryBuilder.query, возвращает true при вызове cursor.moveToFirst () и возвращает нулевые значения.

Кто-нибудь видел что-то подобное раньше?

Ответы [ 3 ]

4 голосов
/ 19 октября 2012

ОК: я понял, что это потому, что я использую функцию агрегации MAX в запросе.Это может быть ошибка, может быть?Теперь я использую сортировку с предложением limit вместо MAX и обошел все вокруг.

0 голосов
/ 23 января 2011

moveToFirst фактически реализовано как moveToPosition(0). moveToPosition - последний метод, определенный в AbstractCursor. Глядя на код, вы можете видеть, что результат частично зависит от getCount. и кажется, что в вашем случае getCount возвращает ненулевое значение.

Посмотрите, каково значение столбца '_id', и попробуйте удалить его. В качестве альтернативы, попробуйте вызвать этот код после повторного создания базы данных (вызов «перетаскивания таблицы», а затем «создания таблицы»).

0 голосов
/ 23 января 2011

Я думаю, вы должны сделать что-то вроде:

if (c.getCount()>0) {
    c.moveToFirst();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...