无法绑定索引3处的参数,因为索引超出范围。该陈述有1个参数

时间:2017-02-03 15:39:01

标签: android android-cursor

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

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
        );

1 个答案:

答案 0 :(得分:3)

  

根本原因是什么?

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

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

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