绑定参数太多。提供了 5 个参数,但该语句需要 3 个参数

Too many bind arguments. 5 arguments were provided but the statement needs 3 arguments

当我尝试更新数据库中的一行时,它说只需要 3 个参数,但你有 5 个。我真的不知道为什么会这样,因为我给了它 3 个参数。这是我的代码:

 public void editdata(int id,String name,String Phonenumber){
        SQLiteDatabase sqLiteDatabase=this.getWritableDatabase();
        ContentValues cv=new ContentValues();
        cv.put(COLIMN_NAME,name);
        cv.put(COLUMN_PHONENUMBER,Phonenumber);
        sqLiteDatabase.update(TB_NAME,cv,"id=?",new String[id]);
    }

这是我的提醒对话:

 holder.btn_edit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                LayoutInflater inflater=LayoutInflater.from(context);
                View add_view=inflater.inflate(R.layout.dialog_addcontacts,null);
               AlertDialog alertDialog=new AlertDialog.Builder(context).create();
                alertDialog.setView(add_view);
                final TextInputEditText edt_name=add_view.findViewById(R.id.edt_name);
                final TextInputEditText edt_phonenumber=add_view.findViewById(R.id.edt_number);
                Button btn_add=add_view.findViewById(R.id.btn_add);
                btn_add.setText("change");
                edt_name.setText(phonebookModel.getName());
                edt_phonenumber.setText(phonebookModel.getPhonenumber());
                btn_add.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        if (!edt_name.getText().toString().isEmpty()&&!edt_phonenumber.getText().toString().isEmpty()) {
                            phoneBookDB.editdata(phonebookModel.getId(),edt_name.getText().toString(), edt_phonenumber.getText().toString());
                            ((Activity)context).finish();
                            context.startActivity(((Activity) context).getIntent());
                        }else {
                            Toast.makeText(context, "please fill in the requested fields", Toast.LENGTH_SHORT).show();
                        }
                    }
                });
                alertDialog.show();
            }
        });

方法 update() 的最后一个参数必须是非 null 字符串的数组,与 ? 占位符一样多:

sqLiteDatabase.update(TB_NAME,cv,"id=?",new String {String.valueOf(id)});

我想在你的代码中你传递了 5 作为 id 和你得到的东西:

new String[id]

是一个包含 5 个 null 个字符串的数组。