I’m trying to query my SQLite DB for all rows that have a particular “city” column.
The following code iterates through a List of cities and creates a WHERE clause.
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);
I’ve also tried this WHERE clause which gives the exact same result.
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"
Then I iterate through the results and use the data:
if (c.moveToFirst()) {
do {
//Do some stuff
} while (c.moveToNext());
}
The problem is that the query only returns 1 row from each city. If I leave the field null there are plenty of results in each city so I know there are more stored in the DB.
What is wrong here? It’s my first time using SQL.
Thanks.
Update:
"city IN ('Victoria', 'Saanich', 'Oak Bay')"
"city='Victoria' OR city='Oak Bay' OR city='Saanich'"
These are the values of w I’ve tried.
Update 2:
SELECT * FROM coffeeshops WHERE city = 'Victoria' UNION SELECT * FROM coffeeshops WHERE city = 'Oak Bay' UNION SELECT * FROM coffeeshops WHERE city = 'Saanich'
I’ve used rawQuery as suggested and constructed the above statement. These changes aren’t reflected in the code above. There are no errors when I run it but the result is the same. I tried using UNION instead and I still get only 1 row for each city. I’m really at a loss here.
I discovered that the problem was with an earlier insert method after all. Thanks for the comments. The code above works fine now. Hopefully someone will find this useful.