Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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 Android:SQLite无法在索引处绑定参数,因为索引超出范围_Java_Android_Sqlite_Kotlin - Fatal编程技术网

Java Android:SQLite无法在索引处绑定参数,因为索引超出范围

Java Android:SQLite无法在索引处绑定参数,因为索引超出范围,java,android,sqlite,kotlin,Java,Android,Sqlite,Kotlin,我正在使用SQLite数据库来存储项目。当我使用where子句和selection参数通过项目ID调用项目时。如果我传递了一个包含多个项目id的选择参数数组,它将崩溃并出现错误: 无法在索引2处绑定参数,因为该索引超出范围。该语句有1个参数 以下是我执行查询的方式: override fun onCreateLoader(id: Int, args: Bundle?): Loader<Cursor> { loaderId = id val selectio

我正在使用SQLite数据库来存储项目。当我使用where子句和selection参数通过项目ID调用项目时。如果我传递了一个包含多个项目id的选择参数数组,它将崩溃并出现错误:

无法在索引2处绑定参数,因为该索引超出范围。该语句有1个参数

以下是我执行查询的方式:

    override fun onCreateLoader(id: Int, args: Bundle?): Loader<Cursor> { 
    loaderId = id 
    val selectionArgs = arrayOf("2", "1")
    return CursorLoader(activity!!,
            MenuContract.ItemEntry.CONTENT_URI,
            Constants.ITEM_PROJECTION_COLUMNS,           
            MenuContract.ItemEntry._ID + "=?",  
            selectionArgs,
            null
    ) 
}
override-fun-onCreateLoader(id:Int,args:Bundle?):Loader{
loaderId=id
val selectionArgs=arrayOf(“2”、“1”)
返回游标装入器(活动!!,
MenuContract.ItemEntry.CONTENT\u URI,
常量.ITEM\u投影\u列,
MenuContract.ItemEntry.\u ID+“=?”,
精选,
无效的
) 
}

如果SelectionArray仅包含一个id,则可以正常工作。不确定原因。

选择参数的数量必须与
的数量(占位符)匹配。所以错误基本上是说,我应该把第二个参数放在哪里,因为我已经替换了第一个
(占位符)

它在只有1个数组元素时工作,因为只有1个
(占位符)

也许你想要:-

MenuContract.ItemEntry._ID + "=? OR " + MenuContract.ItemEntry._ID + "=?",

然后两个参数都有一个占位符。

谢谢你的帮助!在我的例子中,用户可以将项目添加到收藏夹中,我将添加项目的ID存储在prefs中,因此当收藏夹屏幕打开时,它会根据这些ID获取项目。现在,我想,我需要根据项目的数量形成选择字符串。此选择部分不直观。