绑定参数太多。提供了 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
个字符串的数组。
当我尝试更新数据库中的一行时,它说只需要 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
个字符串的数组。