C# 更新MSACCESS中的数据

C# 更新MSACCESS中的数据,c#,wpf,ms-access,oledbcommand,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 OleDbComman

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

我不明白为什么会这样

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

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

因此,我认为要实现上述功能,您需要更改创建参数的顺序,以反映使用参数的顺序:

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

希望这能奏效

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

因此,我认为要实现上述功能,您需要更改创建参数的顺序,以反映使用参数的顺序:

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

希望这能奏效

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

因此,我认为要实现上述功能,您需要更改创建参数的顺序,以反映使用参数的顺序:

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

希望这能奏效

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

因此,我认为要实现上述功能,您需要更改创建参数的顺序,以反映使用参数的顺序:

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

希望这能奏效

WPF是一种UI技术。它绝对与任何类型的数据库操作无关。如果您的查询执行时没有错误,则该查询是有效的,但这并不意味着它符合您的目的。我建议您打开sqlstudio并测试您试图在其中执行的SQL查询,以确保它按照您想要的方式更新记录。然后将该查询移到代码中。WPF是一种UI技术。它绝对与任何类型的数据库操作无关。如果您的查询执行时没有错误,则该查询是有效的,但这并不意味着它符合您的目的。我建议您打开sqlstudio并测试您试图在其中执行的SQL查询,以确保它按照您想要的方式更新记录。然后将该查询移到代码中。WPF是一种UI技术。它绝对与任何类型的数据库操作无关。如果您的查询执行时没有错误,则该查询是有效的,但这并不意味着它符合您的目的。我建议您打开sqlstudio并测试您试图在其中执行的SQL查询,以确保它按照您想要的方式更新记录。然后将该查询移到代码中。WPF是一种UI技术。它绝对与任何类型的数据库操作无关。如果您的查询执行时没有错误,则该查询是有效的,但这并不意味着它符合您的目的。我建议您打开sqlstudio并测试您试图在其中执行的SQL查询,以确保它按照您想要的方式更新记录。然后将该查询移动到您的代码。我可以打勾吗请(:我可以打勾吗请(:我可以打勾吗