java - Android:SQLite 无法在索引处绑定参数,因为索引超出范围
问题描述
我正在使用 SQLite 数据库来存储项目。当我使用 where 子句和选择参数通过它们的 id 调用项目时。如果我传递一个包含多个项目 id 的选择 args 数组,它会崩溃并出现错误:
无法在索引 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
)
}
如果 selectionArgs 数组只包含一个 id,它可以正常工作。不知道为什么。
解决方案
选择参数的数量必须与?
's(占位符)的数量相匹配。所以错误基本上是说我把第二个参数放在哪里,因为我已经替换了第一个?
(占位符)
它在只有 1 个数组元素时起作用,因为只有 1 个?
(占位符)。
也许你想要:-
MenuContract.ItemEntry._ID + "=? OR " + MenuContract.ItemEntry._ID + "=?",
然后两个参数都有一个占位符。
推荐阅读
- angular - 每当我登录到控制台时,我都无法看到我的组件的文件名和行号,即使我可以在那里看到 sourceMap 信息
- flutter - 如何获取firestore颤振中具有重复值的字段的长度?
- google-sheets - 试图在谷歌表上抑制#N/A
- asp.net-core - 授权策略多次评估
- c# - 将 AttributeData 转换为已知的属性类型 Roslyn
- collision - 圆碰撞解决 - 静态碰撞
- python - torch.cat的逆向操作
- javascript - 为什么在 Chart.js 中放置两个带有时间笛卡尔轴的数据集会导致两个 Y 轴刻度集?
- python - Django,从主题中获取所有帖子
- python - “从烧瓶导入烧瓶”中的语法错误