Запрос SQLite, возвращающий только 1 результат на аргумент в предложении WHERE - PullRequest
0 голосов
/ 18 июня 2011

Я пытаюсь запросить в моей базе данных SQLite все строки, в которых есть определенный столбец "city".

Следующий код просматривает список городов и создает предложение WHERE.

w = PlacesProvider.KEY_CITY + " IN " + "(" + "'" + PlacesSearch.currentCity.get(0) + "'";

for (int i = 1; i < PlacesSearch.currentCity.size(); i++) {
    w = w + ", " + "'" + PlacesSearch.currentCity.get(i) + "'";
}

w = w + ")";

//Result looks like "city IN ('city1', 'city2')"

// Get ContentResolver
ContentResolver cr = getContentResolver();
// Get Cursor
Cursor c = cr.query(PlacesProvider.CONTENT_URI, null, w, null, null);

Я также пробовал это предложение WHERE, которое дает точно такой же результат.

w = PlacesProvider.KEY_CITY + " = " + "'" + PlacesSearch.currentCity.get(0) + "'";
for (int i = 1; i < PlacesSearch.currentCity.size(); i++) {
    w = w + " OR " + PlacesProvider.KEY_CITY + " = " + "'" +  PlacesSearch.currentCity.get(i) + "'";
}

//Result looks like "city = 'city1' OR city = city2 OR city = city3"

Затем я перебираю результаты и использую данные:

if (c.moveToFirst()) {
    do {

//Do some stuff

    } while (c.moveToNext());
}

Проблемаявляется то, что запрос возвращает только 1 строку из каждого города.Если я оставлю поле пустым, в каждом городе будет много результатов, поэтому я знаю, что в БД хранится больше.

Что здесь не так?Я впервые использую SQL.

Спасибо.

Обновление:

"city IN ('Victoria', 'Saanich', 'Oak Bay')"
"city='Victoria' OR city='Oak Bay' OR city='Saanich'"

Это значения w, которые я пробовал.

Обновление2:

SELECT * FROM coffeeshops WHERE city = 'Victoria' UNION SELECT * FROM coffeeshops WHERE city = 'Oak Bay' UNION SELECT * FROM coffeeshops WHERE city = 'Saanich'

Я использовал rawQuery, как было предложено, и построил приведенное выше утверждение.Эти изменения не отражены в коде выше.Нет ошибок при запуске, но результат тот же.Я попытался использовать UNION вместо этого, и я все еще получаю только 1 строку для каждого города.Я действительно в растерянности.

1 Ответ

0 голосов
/ 24 июня 2011

Я обнаружил, что проблема заключалась в более раннем методе вставки.Спасибо за комментарии.Код выше работает сейчас нормально.Надеюсь, кто-то найдет это полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...