绑定参数太多.提供了 5 个参数,但该语句需要 4 个参数 [英] Too many bind arguments. 5 arguments were provided but the statement needs 4 arguments

查看:77
本文介绍了绑定参数太多.提供了 5 个参数,但该语句需要 4 个参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在执行下面的函数时得到上面的 IllegalArgumentException.我不明白的是,当我运行调试器时,values 变量显然只包含 4 个参数,这是应该的.

I get the IllegalArgumentException above when executing the function below. What I don't get is that when I run the debugger, the values variable clearly only contains 4 arguments, as it should.

所以……

(1) 这个神秘的第五个参数从何而来?

(1) Where does this mysterious fifth argument come from?

(2) 我应该如何找到这个错误?

(2) How should I approach finding this error?

db.update(
    UppdragEntry.TABLE_NAME,
    values,
    selection,
    selectionArgs);

推荐答案

Selection 包含以下内容: String selection = "_id";String[] selectionArgs = {" =" + personId};

Selection contains the following: String selection = "_id"; String[] selectionArgs = {" =" + personId};

您在 selectionArgs 中有一个值,但在 selection 中没有 ? 占位符.

You have a value in selectionArgs but no ? placeholder for it in selection.

改成

String selection = "_id = ?";
String[] selectionArgs = { "" + personId };

该方法构建一个 SQL 字符串.提供的 ContentValues 构建为 ? 占位符和绑定参数.额外的选择参数也作为绑定参数提供,它们必须与相同数量的 ? 占位符匹配.

The method builds an SQL string. Supplied ContentValues are built as ? placeholder and bind arguments. Additional selection args are also provided as bind arguments and they must be matched with equal number of ? placeholders.

这篇关于绑定参数太多.提供了 5 个参数,但该语句需要 4 个参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆