![](/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.