我有以下代码来更新学生记录。 它没有任何错误或异常,但它没有更新记录。
我不明白为什么会这样。
private void btnUpdate_Click(object sender, EventArgs e)
{
String query = "Update Student Set StdName=@Name , Marks=@Marks where RollNo=@RollNo";
OleDbCommand cmd = new OleDbCommand(query, cn);
cmd.Parameters.Add("@RollNo", OleDbType.VarChar, 10);
cmd.Parameters.Add("@Name", OleDbType.VarChar, 10);
cmd.Parameters.Add("@Marks", OleDbType.Integer);
cmd.Parameters["@RollNo"].Value = txtRollNo.Text;
cmd.Parameters["@Name"].Value = txtName.Text;
cmd.Parameters["@Marks"].Value = Convert.ToInt16(txtMarks.Text);
try
{
cmd.ExecuteNonQuery();
MessageBox.Show("Record Update Successfully");
ClearFields();
}
catch (OleDbException ex)
{
MessageBox.Show(ex.Message);
}
}
它显示消息"记录更新成功"但不更新记录。 当我在datagrid视图中显示所有记录时。
答案 0 :(得分:3)
当使用OLEDB参数纯粹是位置时 - 它会忽略您给出参数的名称,并将第一个值分配给第一个参数,第二个值分配给第二个,依此类推。
所以我相信要完成上述工作,您需要更改创建参数的顺序,以反映您使用参数的顺序:
cmd.Parameters.Add("@Name", OleDbType.VarChar, 10);
cmd.Parameters.Add("@Marks", OleDbType.Integer);
cmd.Parameters.Add("@RollNo", OleDbType.VarChar, 10);
希望这会奏效!