DataAdapter.UpdateCommand not working c#?

本文关键字:working not UpdateCommand DataAdapter | 更新日期: 2023-09-27 17:57:54

我正在使用此代码更新数据库中表中的"SOME"列。但每次我尝试这样做时,都会出现一个错误。

没有为一个或多个必需参数给定值

con.Open();
SlipDA = new OleDbDataAdapter();
string sqlUpdate = "Update tbl_Slip SET RaiseBasic=@RaiseBasic, OtherDed=@OtherDed, Arrears=@Arrears, Notes=@Notes WHERE SlipNo=@SlipNo";
SlipDA.UpdateCommand = new OleDbCommand(sqlUpdate, con);
SlipDA.UpdateCommand.Parameters.AddWithValue("@RaiseBasic", Convert.ToInt32(dRow[4].ToString()));
SlipDA.UpdateCommand.Parameters.AddWithValue("@OtherDed", Convert.ToInt32(dRow[5].ToString()));
SlipDA.UpdateCommand.Parameters.AddWithValue("@Arrears", Convert.ToInt32(dRow[7].ToString()));
SlipDA.UpdateCommand.Parameters.AddWithValue("@Notes", dRow[8].ToString());
SlipDA.UpdateCommand.Parameters.AddWithValue("@SlipNo", dRow[0].ToString());
SlipDA.UpdateCommand.ExecuteNonQuery();
con.Close();

该表包含9列,但我只想更新其中的几列。

DataAdapter.UpdateCommand not working c#?

这可能是问题所在:

OLE DB.NET提供程序不支持用于传递的命名参数SQL语句或由调用的存储过程的参数当CommandType设置为Text时使用OleDbCommand。在这种情况下必须使用问号(?)占位符。例如:SELECT*FROMCustomerID=的客户?

来源:这个

所以基本上你的查询应该是这样的:

string sqlUpdate = "Update tbl_Slip SET RaiseBasic= ?, OtherDed= ?, Arrears= ?, Notes= ? WHERE SlipNo= ?";

尝试这个

    string sqlUpdate = "Update tbl_Slip SET RaiseBasic=@RaiseBasic, OtherDed=@OtherDed, Arrears=@Arrears, Notes=@Notes WHERE SlipNo=@SlipNo";
    OleDbCommand UpdateCommand = new OleDbCommand(sqlUpdate, con);
    UpdateCommand.Parameters.AddWithValue("@RaiseBasic", Convert.ToInt32(dRow[4].ToString()));
    UpdateCommand.Parameters.AddWithValue("@OtherDed", Convert.ToInt32(dRow[5].ToString()));
    UpdateCommand.Parameters.AddWithValue("@Arrears", Convert.ToInt32(dRow[7].ToString()));
    UpdateCommand.Parameters.AddWithValue("@Notes", dRow[8].ToString());
    UpdateCommand.Parameters.AddWithValue("@SlipNo", dRow[0].ToString());
    con.Open();
    UpdateCommand.ExecuteNonQuery();
    con.Close();