使用UPDATE查询更新OLEDB数据库

时间:2016-03-02 16:07:17

标签: c# oledb

我编辑了这个问题以防止再问别人。我正在尝试使用UPDATE查询和参数更新MS Access中的数据表。代码没有给出错误并运行正常,但它不会保存更新的数据,我无法解决原因。

这是我正在使用的代码:

if (Editing)
        {                
            string Query = "UPDATE [Employee] SET PayrollNo=@PayrollNo, FirstName=@FirstName, LastName=@LastName, AnnualHolidayEntitlement=@AnnualHolidayEntitlement, DaysTakenToDate=@DaysTakenToDate WHERE PayrollNo = @SentPayroll"; 
            string ConnString = "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\HoliPlanData.accdb;Persist Security Info=False";
            using (OleDbConnection conn = new OleDbConnection(ConnString))
            using (OleDbCommand UpdateEmployee = new OleDbCommand(Query, conn))
            {                
                conn.Open();
                UpdateEmployee.Parameters.AddWithValue("@SentPayroll", OleDbType.Integer).Value = Convert.ToInt32(PassPayrollNo);
                UpdateEmployee.Parameters.AddWithValue("@PayrollNo", OleDbType.Integer).Value = Convert.ToInt32(TxtPayrollNo.Text);
                UpdateEmployee.Parameters.AddWithValue("@FirstName", OleDbType.VarChar).Value = TxtFirstName.Text;
                UpdateEmployee.Parameters.AddWithValue("@LastName", OleDbType.VarChar).Value = TxtLastName.Text;
                UpdateEmployee.Parameters.AddWithValue("@AnnualHolidayEntitlement", OleDbType.Integer).Value = Convert.ToInt32(TxtAHE.Text);
                UpdateEmployee.Parameters.AddWithValue("@DaysTakenToDate", OleDbType.Integer).Value = Convert.ToInt32(TxtDTTD.Text);
                UpdateEmployee.ExecuteScalar();
                BtnSubmit.Enabled = false;
                MessageBox.Show("Data Edited Successfully");
            }

如何更改此代码以使其有效?提前谢谢。

EDIT / ANSWER。 我不知道,如果你遇到UPDATE查询问题,你可能也不知道。添加参数时,需要按照查询中调用的顺序添加参数。在我的代码中,第一个参数应该是最后添加的,因为它在stringQuery中是最后一个。我搬了它,工作得很好!

1 个答案:

答案 0 :(得分:0)

Why does invoking my UPDATE query in an Access database via OleDb not work?

如果其他人在UPDATE查询中遇到此问题,我花了太长时间才能找到这个问题,有人将其清理得很好。