由于语法的原因,带有参数的UPDATE子句返回错误

时间:2018-08-27 22:31:57

标签: c# mysql

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

这是方法:

resultlist <- lapply(mylist, function(x) lapply(x, function(y) rep(mean(y), length(y))))

我遇到错误

  

'您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在“ r1” =“ r1”附近使用-1 WHERE agentEid =“ H262815”在第1行。

在这种情况下,r1是我要修改的列的名称,由于该方法应该基于rewardid参数更新不同的记录,因此无法固定。

这是我代码中的另一个查询,这个查询非常有效:

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

    }

是否有任何特定的语法可以对reduceReward()方法执行查询?

1 个答案:

答案 0 :(得分:0)

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

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

var query = $"UPDATE agentrewards SET `{rewardid}` = `{rewardid}` - @rewardAmount WHERE agentEid =  @EID";