无法在C#中更新MS Access数据库?

时间:2017-02-02 15:56:18

标签: c# debugging ms-access

我的代码:

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行受影响,但在我的数据库中,必须是一行影响

你能建议我如何调试这个问题吗?

1 个答案:

答案 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());