C# MySQL 语法使用更新命令时出错

本文关键字:命令 出错 更新 MySQL 语法 | 更新日期: 2023-09-27 18:34:44

大家好。我在与数据库交互时遇到了另一个问题。这次使用更新命令。

我有一个包含以下列的表格:

Identity Number (int, auto-increment)
Username (varchar)
Password (varchar)
Authority Level (int)
Last Login (timestamp)

我正在尝试使用标识号更新用户名、密码和权限级别。

这是我尝试执行的代码:

public static async Task<bool> UpdateAdministrator(
    int identityNumber,
    string username,
    string password,
    int authorityLevel)
{
    try
    {
        await OpenConnection();
        MySqlCommand mySqlCommand = mySqlConnection.CreateCommand();
        mySqlCommand.CommandText = "UPDATE Administrators SET Username = @Username, Password = @Password, 'Authority Level' = @Authority_Level WHERE 'Identity Number' = @Identity_Number;";
        mySqlCommand.Parameters.Add("@Identity_Number", MySqlDbType.Int32).Value = identityNumber;
        mySqlCommand.Parameters.Add("@Username", MySqlDbType.VarChar).Value = username;
        mySqlCommand.Parameters.Add("@Password", MySqlDbType.VarChar).Value = password;
        mySqlCommand.Parameters.Add("@Authority_Level", MySqlDbType.Int32).Value = authorityLevel;
        await mySqlCommand.ExecuteNonQueryAsync();
        mySqlCommand.Dispose();
        await CloseConnection();
        return true;
    }
    catch
    {
        return false;
    }
}

这是我得到的例外:

您的 SQL 语法有误;请查看手册 对应于您的MySQL服务器版本,以便使用正确的语法 接近"权限级别"= 0,其中第 1 行的"身份号码"= 1

有人可以帮我找出问题所在吗?提前致谢

C# MySQL 语法使用更新命令时出错

'只是用'

在mySQL中,'字符用于标识表/列名

标识符引号字符是反引号 ("'"(:

所以你的代码应该看起来像

mySqlCommand.CommandText = "UPDATE Administrators SET Username = @Username, Password = @Password, `Authority Level` = @Authority_Level WHERE `Identity Number` = @Identity_Number;";

这都是关于语法的 ' 您可以使用表的实际字段,例如 [...]

SET [Username] = @Username, [Password] = @Password, [Authority Level] = @Authority_Level WHERE [Identity Number] = @Identity_Number;";