C# 使用MySQL参数创建新用户

C# 使用MySQL参数创建新用户,c#,mysql,C#,Mysql,因此,我使用的是MySQL服务器版本8.0.16,如果我尝试让动态创建一个新用户,我确实会收到一条错误消息,上面说:>>您的SQL语法有错误;检查与MySQL服务器版本对应的手册,了解正确的语法。要在第1行使用接近“$password”的No,对于CREATE USER命令,我认为您不能同样地传递命令参数。而是使用字符串插值语法替换如下所示的值 string query = $"CREATE USER '{name}@{host} IDENTIFIED BY {password}"; 对于一个

因此,我使用的是MySQL服务器版本8.0.16,如果我尝试让动态创建一个新用户,我确实会收到一条错误消息,上面说:>>您的SQL语法有错误;检查与MySQL服务器版本对应的手册,了解正确的语法。要在第1行使用接近“$password”的No,对于
CREATE USER
命令,我认为您不能同样地传递命令参数。而是使用字符串插值语法替换如下所示的值

string query = $"CREATE USER '{name}@{host} IDENTIFIED BY {password}";

对于一个较旧的C版本,考虑使用<代码> Stry.FrimATA()/<代码> < /P> 每个OP的评论:你不能因为它不是DML操作。如果您担心SQL注入可能导致输入值来自用户输入,那么您必须以某种方式对其进行清理,而且如果您观察到输入被引用


同样,我建议这种管理操作应该放在DB引导脚本中,而不是放在应用程序代码中。

但它不会像这样保存为SQLInjection,对吗?我不能为创建用户使用参数有什么原因吗?
我不能为创建用户使用参数有什么原因吗?
因为它不起作用。请注意,这些变量中的单引号会打断您的句子,一些替换或scape会被删除needed@bradbury9不,不应该。参见另一篇类似的帖子@bradbury9 makes sence,人们认为用值替换参数来看待它,但是如果你用参数来看待它,并假设参数只是有不同的含义,那么对我来说是合乎逻辑的。谢谢你的建议
string query = $"CREATE USER '{name}@{host} IDENTIFIED BY {password}";
string query = string.Format("CREATE USER '{0}'@'{1}' IDENTIFIED BY '{2}'",name,host,password);