Hallo,
ich hab eine ArrayList, die mir die IDs von Datensätzen einer Tabelle speichert. Allerdings kann ich diese Daten mit SQLiteDatabase.query(...) nicht (wie gewollt) abrufen:
Die erste Abfrage macht immer, was sie soll und ich erhalte den gewünschten Cursor. Die beiden anderen Abfragen liefern mir den gewünschten Cursor nur, wenn nur eine ID in der ArrayList ist.
Ausgabe bei einer ID in der Liste:
Ausgabe bei zwei (und mehr) IDs in der Liste:
Ganz offensichtlich mache ich bei den
etwas falsch, ich komme aber nicht dahinter.
Gruß
ich hab eine ArrayList, die mir die IDs von Datensätzen einer Tabelle speichert. Allerdings kann ich diese Daten mit SQLiteDatabase.query(...) nicht (wie gewollt) abrufen:
Java:
String ids = "";
for (int i = 0; i < mIngredientIds.size(); i++) {
ids = ids.concat(mIngredientIds.get(i));
if (i < mIngredientIds.size() - 1) {
ids = ids.concat(", ");
}
}
log(ids);
String sql = SQLiteQueryBuilder.buildQueryString(false,
TABLE_NAME, null, COL_ID
+ " IN (" + ids + ")", null, null, null, null);
log(sql);
log(db.rawQuery(sql, null).getCount());
sql = SQLiteQueryBuilder.buildQueryString(false,
TABLE_NAME, null, COL_ID
+ " IN (?)", null, null, null, null);
log(sql);
log(db.rawQuery(sql, new String[] { ids }).getCount());
Cursor cursor = db.query(TABLE_NAME, null,
COL_ID + " IN (?)", new String[] { ids },
null, null, null);
log(cursor.getCount());
Ausgabe bei einer ID in der Liste:
Code:
2
SELECT * FROM Nutrients WHERE _id IN (2, 7)
1
SELECT * FROM Nutrients WHERE _id IN (?)
1
1
Ausgabe bei zwei (und mehr) IDs in der Liste:
Code:
2, 7
SELECT * FROM Nutrients WHERE _id IN (2, 7)
2
SELECT * FROM Nutrients WHERE _id IN (?) //Dass das ? hier nicht ersetzt ist, ist logisch, da das erst im Queryaufruf geschieht.
0
0
Ganz offensichtlich mache ich bei den
Code:
String[] selectionArgs
Gruß
Zuletzt bearbeitet: