【问题标题】:Cannot bind argument at index 3 because the index is out of range. The statement has 1 parameters无法在索引 3 处绑定参数,因为索引超出范围。该语句有 1 个参数
【发布时间】:2017-02-03 23:46:04
【问题描述】:

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

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

【问题讨论】:

    标签: android android-cursor


    【解决方案1】:

    根本原因是什么?

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

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

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

    【讨论】:

    • @JiYa 如果要查看值是否是三个值中的任何一个,请执行“TaskEntry.COLUMN_TASK_STATUS IN (value1, value2, value3)”
    • 谢谢@Gabe 和 Blackbelt
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-19
    相关资源
    最近更新 更多