使用Update命令的C#MySQL语法错误

时间:2016-02-16 12:56:24

标签: c# mysql syntax

美好的一天。我遇到了另一个与我的数据库交互的问题。这次使用 update 命令。

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

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'

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

2 个答案:

答案 0 :(得分:1)

只需用`

重新'

在mySQL中,`字符用于identify表/列名称

  

标识符引号字符是反引号(“`”):

所以你的代码应该是

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

答案 1 :(得分:0)

这完全是关于语法&#39;您可以使用[...]

等表格的实际字段
SET [Username] = @Username, [Password] = @Password, [Authority Level] = @Authority_Level WHERE [Identity Number] = @Identity_Number;";