Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用更新查询更新OLEDB数据库_C#_Oledb - Fatal编程技术网

C# 使用更新查询更新OLEDB数据库

C# 使用更新查询更新OLEDB数据库,c#,oledb,C#,Oledb,我对这个问题进行了编辑,以避免再问另一个问题。我正在尝试使用更新查询和参数更新MS Access中的datatable。代码没有给出错误并且运行良好,但是它没有保存更新的数据,我也不知道为什么 以下是我使用的代码: if (Editing) { string Query = "UPDATE [Employee] SET PayrollNo=@PayrollNo, FirstName=@FirstName, LastName=

我对这个问题进行了编辑,以避免再问另一个问题。我正在尝试使用更新查询和参数更新MS Access中的datatable。代码没有给出错误并且运行良好,但是它没有保存更新的数据,我也不知道为什么

以下是我使用的代码:

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");
            }
如何更改此代码以使其正常工作?提前谢谢

编辑/回答。 我不知道,如果你在更新查询中遇到问题,你可能也不知道。添加参数时,需要按照查询中调用参数的相同顺序添加参数。在我的代码中,第一个参数应该最后添加,因为它是stringQuery中的最后一个参数。我移动了它,它工作得很好


如果其他人在更新查询方面有此问题,我花了太长时间才找到此问题,有人很好地解决了此问题。

删除单引号,参数化将为您解决此问题<代码>@?看起来很奇怪。工资单在数据库中是varchar吗?可能是您正在将int32放入参数中,但在addwithvalue中将其设置为varchar?仅供参考,您有
addwithvalue(name,DBTYPE)
它应该是
addwithvalue(name,value)
虽然它看起来仍然可以工作,但您可以使用更改来编辑代码,并使用
@something
而不是
@
“?”
我可以看出
可能会导致问题,因为它是一个未命名的OLEDB参数标记,与命名的参数混合,将其更改为与所有其他文件相同的@name格式