代码之家  ›  专栏  ›  技术社区  ›  Robus

C#oledbconnection更新不起作用

  •  0
  • Robus  · 技术社区  · 12 年前

    问题代码:

    public static void updateItemAmount(int item_id, int delta)
    {
        using (OleDbCommand cmd = connection.CreateCommand())
        {
            // create command with placeholders
            cmd.CommandText =
                "UPDATE Items SET amount_total = amount_total+@delta WHERE item_number=@item_id;";
    
            // add named parameters
            cmd.Parameters.AddRange(new OleDbParameter[]
            {
                new OleDbParameter("@item_id",item_id),
                //new OleDbParameter("@delta",delta),
    
            });
            cmd.Parameters.Add("@delta", OleDbType.Integer).Value = delta;
    
            // execute
            if (cmd.ExecuteNonQuery() == 0)
                MessageBox.Show("Error");
        }
    }
    

    即使我验证了item_id是正确的,我仍然会收到“Error”消息。为什么?

    1 回复  |  直到 12 年前
        1
  •  0
  •   Robus    12 年前

    几分钟后,我发现了问题。显然,参数必须按顺序(?)绑定。这解决了它:

                cmd.Parameters.AddRange(new OleDbParameter[]
                {
                    new OleDbParameter("@delta",delta),
                    new OleDbParameter("@item_id",item_id),
    
                });
                //cmd.Parameters.Add("@delta", OleDbType.Integer).Value = delta;