簡體   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