![](/img/trans.png)
[英]MySQL Error In C# - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax
[英]Error in your SQL syntax - c# - MySQL
我知道这可能是我搞砸了很简单的事情。 谁能告诉我我的“替换命令文本”出了什么问题?
cmd.CommandText = $"UPDATE `{dataTableName}` " +
"SET (`entry`, `zone`, `x_axis`, `y_axis`, `z_axis`, `situation`, `faction`, `type`) " +
"VALUES (@Entry, @Zone, @X, @Y, @Z, @Situation, @Faction, @Type)" +
"WHERE zone = @Zone AND x_axis = @X AND y_axis = @Y";
//Add data value with Parameters.
cmd.Parameters.AddWithValue("@Entry", entry);
cmd.Parameters.AddWithValue("@Zone", zone);
cmd.Parameters.AddWithValue("@X", x);
cmd.Parameters.AddWithValue("@Y", y);
cmd.Parameters.AddWithValue("@Z", z);
cmd.Parameters.AddWithValue("@Situation", situation);
cmd.Parameters.AddWithValue("@Type", type);
cmd.Parameters.AddWithValue("@Faction", faction);
在where
的空间不是问题。 问题是列列表。 MySQL要求set col = val, . . .
set col = val, . . .
语法。 某些数据库(例如Oracle)确实允许使用列列表,但即使是那些不使用VALUES
关键字的列表也是如此。
因此,构建如下代码:
cmd.CommandText = $"UPDATE `{dataTableName}`" +
" SET `entry` = @Entry, `z_axis` = @Z, . . ." +
" WHERE zone = @Zone AND x_axis = @X AND y_axis = @Y";
还要注意,您不需要设置zone
, x_axis
和y_axis
因为where
子句要求它们已经具有正确的值。
答案是:
1)我的SET语法完全错误。
这是工作代码
cmd.CommandText = $"UPDATE `{dataTableName}` " +
"SET entry = @Entry, zone = @Zone, x_axis = @X, y_axis = @Y, z_axis = @Z, " +
"situation = @Situation, faction = @Faction, type = @Type " +
$"WHERE zone = @Zone AND x_axis = @X AND y_axis = @Y";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.