0

我正在使用此代码更新数据库中表中的“某些”列。但是每次我尝试这样做时都会出现错误。

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

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 列,但我只想更新一些。

4

2 回答 2

2

这可能是问题所在:

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

来源:这个

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

string sqlUpdate = "Update tbl_Slip SET RaiseBasic= ?, OtherDed= ?, Arrears= ?, Notes= ? WHERE SlipNo= ?";
于 2013-02-05T20:43:57.033 回答
0

尝试这个

    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();
于 2013-08-20T18:25:22.290 回答