我的代码:
OleDbCommand cmd1 = new OleDbCommand("UPDATE student_info SET fee_due = @fee_due WHERE adm_no = @adm_no", con);
cmd1.Parameters.AddWithValue("@adm_no", adm_no);
cmd1.Parameters.AddWithValue("@fee_due", fee_due);
int affect = cmd1.ExecuteNonQuery();
MessageBox.Show(affect.ToString());
我的代码每次都会显示0行受影响,但在我的数据库中,必须是一行影响
你能建议我如何调试这个问题吗?
答案 0 :(得分:1)
由于OleDB for MS Access 不支持命名参数(仅限位置参数),因此您必须非常小心地按照定义参数的相同顺序提供值。 / p>
在您的情况下,语句首先在@fee_due
之前列出@adm_no
- 但您以其他顺序提供值。
更改您的代码:
OleDbCommand cmd1 = new OleDbCommand("UPDATE student_info SET fee_due = @fee_due WHERE adm_no = @adm_no", con);
// provide the value for @fee_due FIRST
cmd1.Parameters.AddWithValue("@fee_due", fee_due);
// provide the value for @adm_no only after @fee_due
cmd1.Parameters.AddWithValue("@adm_no", adm_no);
int affect = cmd1.ExecuteNonQuery();
MessageBox.Show(affect.ToString());