我想更改 MySQL 中用户的密码,需要
@
符号。但是,C# SQL 命令使用它作为参数持有者,因此以下命令失败。
command.CommandText = $"ALTER USER '{user}'@'%' IDENTIFIED BY '{password}'";
如何逃避或强制
DbCommand
使用文字 @
?
我知道 SQL 注入问题。我将在控制台应用程序中将其作为一次性维护来进行一些数据迁移。
MySQL 连接器尝试解析 SQL 来实现命名参数,并且似乎无法提供逃脱的方法
@
;角色是受其影响的一种情况。幸运的是,您正在使用 @'%'
,并且 @'%'
是默认值。
command.CommandText = $"ALTER USER '{user}' IDENTIFIED BY '{password}'";
您甚至可以使用参数。如果这有效,你应该——无论是否一次性,它只是更干净。
command.CommandText = "ALTER USER @User IDENTIFIED BY @Password";
command.Parameters.AddWithValue("@User", user);
command.Parameters.AddWithValue("@Password", password);