在查询中,我正在使用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()方法执行查询?
答案 0 :(得分:0)
您不能在MySQL查询中使用参数来指定表名或列名;您只能使用它们来提供值。
在这种情况下,您需要使用字符串名称的字符串连接来构建查询:
var query = $"UPDATE agentrewards SET `{rewardid}` = `{rewardid}` - @rewardAmount WHERE agentEid = @EID";