2013-07-22 7 views
0

Я пытаюсь выполнить следующий запрос:Android SQLite rawQuery «ГДЕ» не работает

try { 

     if (db != null){ 
     cursor = db.rawQuery("SELECT fp_id, COUNT(*) FROM rssi WHERE (mac = '20:aa:4b:d3:db:d6' and (rssi > -72 and rssi < -64)) OR (mac = '08:86:3b:f1:da:18' and (rssi > -63 and rssi < -55)) group by fp_id",null); 
     } 
     int cursorSize = cursor.getCount(); 
     DatabaseUtils.dumpCursor(cursor); 
    } 

я получаю cursorSize = 0, и это, очевидно, означает, что rawQuery() не работает. Я протестировал его, удалив предложение WHERE, и он работал нормально. С ГДЕ оно не работает. Любая помощь приветствуется ...

+1

Если исключение не было выбрано, синтаксис действителен. Таким образом, если есть 0 результатов, индикация ясна: данные были * отфильтрованы * в соответствии с определенным выражением. Итак, почему? Невозможно дать подробное объяснение, не видя * фактических данных * (и типов) и * ожидаемого результата *. – user2246674

+0

Исключено исключение. Я протестировал вышеуказанный запрос в SQLiteStudio в целевой базе данных, и он отлично работал и возвратил ожидаемые результаты, но здесь он никогда не работал ... –

+0

Что такое rssi? Это таблица и столбец в вашей таблице? Это запутанно, потому что вы используете его как для «FROM rssi», так и «rssi> -72» и т. Д. – Oleksiy

ответ

1

Хотя приемлемо использовать одно и то же имя для таблицы и один из ее столбцов в базе данных SQLite, это не будет работать с Android. Поэтому изменение названия таблицы или ее поля решает проблему. Примечание. Важно обновить базу данных (увеличить номер версии).

Смежные вопросы