【问题标题】:Can I increment some value during database update?我可以在数据库更新期间增加一些值吗?
【发布时间】:2011-08-28 21:54:26
【问题描述】:

我可以这样做吗?

int somevalue=500;
string getUpSql = "UPDATE money FROM bank SET Money= @Money + somevalue WHERE UserId=@UserId";

我正在尝试向点击按钮的帐户添加一些钱

    protected void BtnWork_Click(object sender, EventArgs e)
    {
        MembershipUser currentUser = Membership.GetUser();
        Guid currentUserId = (Guid)currentUser.ProviderUserKey;
string ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
string getUpSql = "UPDATE money FROM bank SET Money= @Money + somevalue WHERE UserId=@UserId";
 using (SqlConnection myConnection = new SqlConnection(ConnectionString))
        {

           SqlCommand myCommand = new SqlCommand(getUpSql, myConnection);
 myConnection.Open();

 myCommand.Parameters.AddWithValue("@Money",SqlDbType.Int); 

 myCommand.ExecuteNonQuery();

            myConnection.Close();
        }

【问题讨论】:

  • 如果您使用@UserId,请确保将其作为参数传入。发布 Custon_MoneyWork 表的错误消息和定义会有所帮助。
  • 没有错误,只是不工作:) @UserId 没问题..
  • 问题是——我如何加上“somevalue”?
  • @RaShe - 您发布的代码应该给您一个错误。语法无效,它引用了不存在的参数。

标签: asp.net sql sql-server database sql-update


【解决方案1】:

UPDATE 语句将 Money 列增加 @somevalue 参数中的数量的语法是

UPDATE  bank
SET     Money = Money + @somevalue /* Can use Money += @somevalue if 2008 */
WHERE   UserId = @UserId

【讨论】:

    【解决方案2】:

    您没有增加值。您将其设置为@Money + somevalue,其中@Money 设置为SqlDbType.Int 的任何值。

    把你的 SQL 改成这个...

    UPDATE money FROM bank SET Money = Money + @somevalue WHERE UserId = @UserId
    

    ...然后像这样设置@somevalue@UserId参数...

    int somevalue = ... ;
    myCommand.Parameters.AddWithValue("somevalue", somevalue);
    TypeOfUserId UserId = ... ;
    myCommand.Parameters.AddWithValue("UserId", UserId);
    

    【讨论】:

      【解决方案3】:

      UPDATE money FROM bank SET Money= @Money + somevalue WHERE UserId=@UserId

      你确定要@Money吗?如果您想将存储在 Money 列中的值增加 somevalue,您需要将其编写为 Money = Money + @somevalue,并且您必须将 somevalue 绑定为参数,而不是 Money

      【讨论】:

      • 无意冒犯,但也许您需要先了解这些东西,而不是在不了解您实际在做什么的情况下进行拼图编程。我的意思是来吧,你已经在你的代码中绑定了一个参数......显然你需要先了解基础知识。
      猜你喜欢
      • 2013-07-05
      • 2015-06-26
      • 2014-09-23
      • 2018-12-11
      • 1970-01-01
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多