首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有参数的UPDATE子句由于语法原因返回错误。

具有参数的UPDATE子句由于语法原因返回错误。
EN

Stack Overflow用户
提问于 2018-08-27 22:31:56
回答 1查看 48关注 0票数 0

我使用UPDATE命令修改记录,在查询中使用参数。我使用了相同的参数命令,但这是唯一一个抛出错误的命令。

这是一种方法:

代码语言:javascript
复制
 void decreaseReward(string rewardid, int rewardAmount)
    {
        ////Connection String//////////
        string connStr = "SERVER=localhost;" + "DATABASE=scores;" + "UID=root;" + "PASSWORD=password;";
        //Connection object
        MySqlConnection dbcon = new MySqlConnection(connStr);
        try
        {
            dbcon.Open();
        }
        catch (Exception err)
        {
            MessageBox.Show("Message: " + err.Message);
        }

        if (dbcon.State == ConnectionState.Open)
        {
            String query = "UPDATE agentrewards SET @rewardid = @rewardid -  @rewardAmount WHERE agentEid =  @EID";
            //Create Command
            MySqlCommand cmd = new MySqlCommand(query, dbcon);
            cmd.Parameters.AddWithValue("EID", EID);
            cmd.Parameters.AddWithValue("rewardid", rewardid);
            cmd.Parameters.AddWithValue("rewardAmount", rewardAmount);
            cmd.ExecuteNonQuery();
        }
        dbcon.Close();

    }

我搞错了

“您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以获得在”r1“=”r1“-1附近使用的语法,其中agentEid =‘H 262815’位于第1行。

在这种情况下,r1是我想要修改的列的名称,它不能被修正,因为这个方法应该根据奖励参数更新不同的记录。

这是我的代码中的另一个查询,这个查询工作得很好:

代码语言:javascript
复制
UPDATE agents SET agentTokens = agentTokens + @total WHERE agentEid =  @EID

是否有任何特定的语法来执行对decreaseReward()方法的查询?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-28 00:21:46

不能在MySQL查询中使用参数来指定表或列名;只能使用它们来提供值。

在这种情况下,您需要对列名使用字符串连接来构建查询:

代码语言:javascript
复制
var query = $"UPDATE agentrewards SET `{rewardid}` = `{rewardid}` - @rewardAmount WHERE agentEid =  @EID";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52047764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档