无法绑定索引 3 处的参数,因为索引超出范围.该语句有 1 个参数



我在下面的代码中得到了错误。根本原因是什么?

Cursor cursor = context.getContentResolver().query(
                TaskEntry.CONTENT_URI,
                null,
                TaskEntry.COLUMN_TASK_STATUS + "=?",
                new String[]{TaskStatus.NEW.name(), TaskStatus.FINISHED.name(), TaskStatus.DELETED.name()},
                null
        );

根本原因是什么?

您的 where 子句/字符串TaskEntry.COLUMN_TASK_STATUS + "=?",只有一个"占位符",=? ,但您为替换提供了三条不同的信息,

new String[]{TaskStatus.NEW.name(), TaskStatus.FINISHED.name(), TaskStatus.DELETED.name()}

?的数量必须与String数组的大小相匹配。所以在你的情况下,它应该只有一个。正如 @Gabe 所指出的,如果要获取具有这些值之一的列,则可以使用 INOR

最新更新