在MS ACCESS中更新数据

时间:2013-11-18 17:18:00

标签: c# wpf ms-access oledbcommand

我有以下代码来更新学生记录。 它没有任何错误或异常,但它没有更新记录。

我不明白为什么会这样。

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视图中显示所有记录时。

1 个答案:

答案 0 :(得分:3)

当使用OLEDB参数纯粹是位置时 - 它会忽略您给出参数的名称,并将第一个值分配给第一个参数,第二个值分配给第二个,依此类推。

所以我相信要完成上述工作,您需要更改创建参数的顺序,以反映您使用参数的顺序:

cmd.Parameters.Add("@Name", OleDbType.VarChar, 10);
cmd.Parameters.Add("@Marks", OleDbType.Integer);    
cmd.Parameters.Add("@RollNo", OleDbType.VarChar, 10);

希望这会奏效!