在 SQL 命令文本中使用 @ 文字

问题描述 投票:0回答:1

我想更改 MySQL 中用户的密码,需要

@
符号。但是,C# SQL 命令使用它作为参数持有者,因此以下命令失败。

command.CommandText = $"ALTER USER '{user}'@'%' IDENTIFIED BY '{password}'";

如何逃避或强制

DbCommand
使用文字
@

我知道 SQL 注入问题。我将在控制台应用程序中将其作为一次性维护来进行一些数据迁移。

c# sql mysql
1个回答
0
投票

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);
© www.soinside.com 2019 - 2024. All rights reserved.