java - 绑定(bind)参数太多。提供了 5 个参数,但语句需要 4 个参数

标签 java android sqlite sql-update

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

所以...

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

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

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

最佳答案

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

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

改成

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

该方法构建了一个 SQL 字符串。提供的 ContentValues 构建为 ? 占位符和绑定(bind)参数。其他选择参数也作为绑定(bind)参数提供,它们必须与相同数量的 ? 占位符匹配。

关于java - 绑定(bind)参数太多。提供了 5 个参数,但语句需要 4 个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24797635/

相关文章:

java - 将监听器添加到 JButton 数组;

java - 收到拒绝访问此文件 localhost_access_log.2014-08-30.txt 的 apache tomcat 错误?

android - 如何在android中卸载应用程序时删除共享首选项

android - mavenLocal不从.m2存储库中获取 Artifact

android - 如何呈现非统一数据

c# - 在 SQLITE 中将数字转换为文本时附加 ".0"

mysql - 从值列表中进行 sqlite 查询

java - 具有特定父类的切入点匹配类型

java - JPA、EJB 错误 HHH000262 : Table not found: employee

java - 使用#recycle() 后应回收类型化数组