繁体   English   中英

SQL语法错误-C#-MySQL

[英]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";

还要注意,您不需要设置zonex_axisy_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM