【问题标题】:DataAdapter.UpdateCommand not working c#?DataAdapter.UpdateCommand 不工作 C#?
【发布时间】:2013-01-20 21:15:33
【问题描述】:

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

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

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

【问题讨论】:

  • 它是 int32 我更正了它但仍然错误 (Convert.ToInt32(dRow[0].ToString());
  • 您确认所有字符串都不为空吗?

标签: c# database datatable dataadapter


【解决方案1】:

这可能是问题:

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

来源:this

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

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

【讨论】:

  • @WaqasAli 只需如上所述更改 sqlUpdate。你的其余代码都很好。
【解决方案2】:

试试这个

    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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-23
    • 2014-07-09
    • 2016-12-15
    • 2013-05-29
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多