使用 UPDATE 查询更新 OLEDB 数据库
Updating OLEDB Database using UPDATE Query
我已经编辑了这个问题以防止问到另一个问题。我正在尝试使用 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。
我不知道,如果您遇到更新查询的问题,您可能也不知道。添加参数时,您需要按照在查询中调用它们的顺序添加它们。在我的代码中,第一个参数应该最后添加,因为它在 stringQuery 中是最后一个。我移动了它,它运行良好!
Why does invoking my UPDATE query in an Access database via OleDb not work?
如果其他人遇到更新查询的这个问题,我花了很长时间才找到这个问题,有人很好地解决了这个问题。
我已经编辑了这个问题以防止问到另一个问题。我正在尝试使用 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。 我不知道,如果您遇到更新查询的问题,您可能也不知道。添加参数时,您需要按照在查询中调用它们的顺序添加它们。在我的代码中,第一个参数应该最后添加,因为它在 stringQuery 中是最后一个。我移动了它,它运行良好!
Why does invoking my UPDATE query in an Access database via OleDb not work?
如果其他人遇到更新查询的这个问题,我花了很长时间才找到这个问题,有人很好地解决了这个问题。