美好的一天。我遇到了另一个与我的数据库交互的问题。这次使用 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'
有人可以帮我找出问题所在吗?提前致谢
答案 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;";