首页 > 解决方案 > MySQL 服务器错误 - 您的 SQL 语法有错误

问题描述

我正在尝试更新数据库表并收到错误

“MySql.Data.MySqlClient.MySqlException: '您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在 'group='superadmin' 附近使用的正确语法 WHERE identifier='steam:steam: 1100001098b5888'' 在第 1 行'"

        // Creates query to run
public void UpdateInfo(String jobTitle, int jobGrade, String adminLevel, String identifier) {

    // Opens the database connection if it's not already open
    if (!(databaseConnected)) {
        openConnection();
    }

    // Creates query to run
    String query = "UPDATE " + table + " SET job=@jobTitle, job_grade=@jobGrade, group=@adminLevel WHERE identifier=@identifier";

    // Makes a new command
    MySqlCommand cmd = new MySqlCommand(query, connection);

    // Replaces the @ placeholders with actual variables
    cmd.Parameters.AddWithValue("@jobTitle", jobTitle);
    cmd.Parameters.AddWithValue("@jobGrade", jobGrade);
    cmd.Parameters.AddWithValue("@adminLevel", adminLevel);
    cmd.Parameters.AddWithValue("@identifier", identifier);

    // Executes it and if it's...
    if (cmd.ExecuteNonQuery() > 0) {
        // Successful
        MessageBox.Show("Successfully updated information");

        closeConnection();
        return;
    } else {
        // Not successful
        MessageBox.Show("Error with updating information!");

        // Closes the connection again to prevent leaks
        closeConnection();
        return;
    }

}

标签: c#mysql

解决方案


我在https://sqltest.net/上尝试了您的查询,并注意到当我尝试创建表时它突出显示了“组”。我想知道问题是否可能是使用“组”作为列名,因为它是一个保留字。

是否可以尝试将列重命名为 group_level 或在“组”或“组”周围添加反引号并查看是否有效?

所以例如

'组'=@grouplevel

我发现这个线程这个线程重命名他们有问题的列作为列名。添加反引号似乎解决了这两个问题。

编辑:根据OP,双引号(“)解决了这个问题而不是单引号。编辑后的答案包括在内。


推荐阅读