使用动态 selectionArgs android SQLite 进行查询
query with dynamic selectionArgs android SQLite
我正在尝试 return 一个游标,其中包含与字符串数组 id 中的一个 id 匹配的所有行 - 这就是我目前所拥有的,但我收到以下错误。我认为这与它只有 1 个 '?' 这一事实有关但是我该如何使它动态化呢?有什么建议吗?
public Cursor getSelectedEntries(String... ids)
{
return movieDbInstance.query(
DATABASE_TABLE,
new String[]{_ID, MOVIE_ID, MOVIE_TITLE, MOVIE_YEAR, MOVIE_POSTER},
MOVIE_ID + " = ?",
ids,
null,
null,
null);
}
例如,字符串数组的 ID 数量不断变化
它可能是 {"abc","def"} 或者它可能是 {"abc","def","gef","gdf"} 我需要 return MOVIE_ID = 其中一个的所有行...
错误消息`java.lang.IllegalArgumentException:无法在索引 10 处绑定参数,因为索引超出范围。
该语句有 1 个参数。在 android.database.sqlite.SQLiteProgram.bind(SQLiteProgram.java:212)
您正在传递一组 ID,但您的 WHERE 语句中只有一个占位符。如果您有多个 ID,则需要在 WHERE 子句中放置多个占位符,例如:
MOVIE_ID + " = ? OR " + MOVIE_ID + " = ? OR " + ...
占位符的数量当然需要与数组中的 ID 数量相匹配。因此,如果 id 的数量发生变化,您需要像上面那样动态构建 WHERE 子句。
我正在尝试 return 一个游标,其中包含与字符串数组 id 中的一个 id 匹配的所有行 - 这就是我目前所拥有的,但我收到以下错误。我认为这与它只有 1 个 '?' 这一事实有关但是我该如何使它动态化呢?有什么建议吗?
public Cursor getSelectedEntries(String... ids)
{
return movieDbInstance.query(
DATABASE_TABLE,
new String[]{_ID, MOVIE_ID, MOVIE_TITLE, MOVIE_YEAR, MOVIE_POSTER},
MOVIE_ID + " = ?",
ids,
null,
null,
null);
}
例如,字符串数组的 ID 数量不断变化 它可能是 {"abc","def"} 或者它可能是 {"abc","def","gef","gdf"} 我需要 return MOVIE_ID = 其中一个的所有行...
错误消息`java.lang.IllegalArgumentException:无法在索引 10 处绑定参数,因为索引超出范围。
该语句有 1 个参数。在 android.database.sqlite.SQLiteProgram.bind(SQLiteProgram.java:212)
您正在传递一组 ID,但您的 WHERE 语句中只有一个占位符。如果您有多个 ID,则需要在 WHERE 子句中放置多个占位符,例如:
MOVIE_ID + " = ? OR " + MOVIE_ID + " = ? OR " + ...
占位符的数量当然需要与数组中的 ID 数量相匹配。因此,如果 id 的数量发生变化,您需要像上面那样动态构建 WHERE 子句。