我使用UPDATE命令修改记录,在查询中使用参数。我使用了相同的参数命令,但这是唯一一个抛出错误的命令。
这是一种方法:
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是我想要修改的列的名称,它不能被修正,因为这个方法应该根据奖励参数更新不同的记录。
这是我的代码中的另一个查询,这个查询工作得很好:
UPDATE agents SET agentTokens = agentTokens + @total WHERE agentEid = @EID是否有任何特定的语法来执行对decreaseReward()方法的查询?
发布于 2018-08-28 00:21:46
不能在MySQL查询中使用参数来指定表或列名;只能使用它们来提供值。
在这种情况下,您需要对列名使用字符串连接来构建查询:
var query = $"UPDATE agentrewards SET `{rewardid}` = `{rewardid}` - @rewardAmount WHERE agentEid = @EID";https://stackoverflow.com/questions/52047764
复制相似问题