Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用动态selectionArgs android SQLite进行查询_Java_Android_Sqlite_Cursor - Fatal编程技术网

Java 使用动态selectionArgs android SQLite进行查询

Java 使用动态selectionArgs android SQLite进行查询,java,android,sqlite,cursor,Java,Android,Sqlite,Cursor,我试图返回一个游标,其中包含与字符串数组id中的一个id匹配的所有行-这就是我到目前为止得到的错误。我在想这和它只有一个“?”这一事实有关,但我该如何使它充满活力呢?有什么建议吗 public Cursor getSelectedEntries(String... ids) { return movieDbInstance.query( DATABASE_TABLE, new String[]{_ID, MOVIE_ID, MOVIE_T

我试图返回一个游标,其中包含与字符串数组id中的一个id匹配的所有行-这就是我到目前为止得到的错误。我在想这和它只有一个“?”这一事实有关,但我该如何使它充满活力呢?有什么建议吗

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”},我需要返回电影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子句