无法在索引 3 处绑定参数,因为索引超出范围。该语句有 1 个参数
Cannot bind argument at index 3 because the index is out of range. The statement has 1 parameters
我在下面的代码中遇到了错误。根本原因是什么?
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
);
What's the root cause?
你的 where clause/string TaskEntry.COLUMN_TASK_STATUS + "=?",
只有一个 "placeholder", =?
,但是你提供了三个不同的信息来替代
new String[]{TaskStatus.NEW.name(), TaskStatus.FINISHED.name(), TaskStatus.DELETED.name()}
?
的数量必须与 String
的数组大小相匹配。所以在你的情况下它应该只有一个。正如 @Gabe
所指出的,如果您想获取具有这些值之一的列,您可以使用 IN
或 OR
我在下面的代码中遇到了错误。根本原因是什么?
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
);
What's the root cause?
你的 where clause/string TaskEntry.COLUMN_TASK_STATUS + "=?",
只有一个 "placeholder", =?
,但是你提供了三个不同的信息来替代
new String[]{TaskStatus.NEW.name(), TaskStatus.FINISHED.name(), TaskStatus.DELETED.name()}
?
的数量必须与 String
的数组大小相匹配。所以在你的情况下它应该只有一个。正如 @Gabe
所指出的,如果您想获取具有这些值之一的列,您可以使用 IN
或 OR