使用动态 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 子句。