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

按变量递增整列值

  •  1
  • techno  · 技术社区  · 6 年前

    我使用下面的代码通过变量递增整列值。但是代码似乎没有更新值。我做错了什么?

    SqlCommand command = new SqlCommand("UPDATE maintable SET counter=counter+@cvalue WHERE uname=@username", c);
    command.Parameters.AddWithValue("@username", "me");
    command.Parameters.AddWithValue("@cvalue", value);
    command.ExecuteNonQuery();
    

    enter image description here

    2 回复  |  直到 6 年前
        1
  •  0
  •   Earl    6 年前

    尝试

    UPDATE maintable SET counter=ISNULL(counter,0)+@cvalue WHERE uname=@username
    
        2
  •  0
  •   Ketan Kotak    6 年前

    计数器和cvalue的数据类型都是int还是decimal?否则不会对字符串执行增量

    SqlCommand command = new SqlCommand("UPDATE maintable SET counter=ISNULL(counter,0)+ISNULL(@cvalue,0) WHERE uname=@username", c);
    command.Parameters.AddWithValue("@username", "me");
    command.Parameters.AddWithValue("@cvalue", value);
    command.ExecuteNonQuery();
    
        3
  •  0
  •   DarkRob    6 年前

    为什么不直接传递数据而不是像参数一样传递呢。

      SqlCommand command = new SqlCommand("UPDATE maintable SET counter=(ISNULL(counter,0) + " + value + ") WHERE uname='me'", c);
      command.ExecuteNonQuery();