C# 如何向SqlCommand添加参数?

C# 如何向SqlCommand添加参数?,c#,sql-server,tsql,ado,C#,Sql Server,Tsql,Ado,我试图将参数添加到SqlCommand,但它插入了参数名而不是参数值 这是代码片段: var QueryString1 = "Insert into UsersTable (Username, Password, IsAdmin, Email, Budget, Phone) " + "values ('@Un', '@P','" + user.IsAdmin + "', '@E', '@B', '@Ph')"; using (SqlCommand comm

我试图将参数添加到
SqlCommand
,但它插入了参数名而不是参数值

这是代码片段:

var QueryString1 = "Insert into UsersTable (Username, Password, IsAdmin, Email, Budget, Phone) " +
                   "values ('@Un', '@P','" + user.IsAdmin + "', '@E', '@B', '@Ph')";

using (SqlCommand command = new SqlCommand(QueryString1, con))
{
    command.Parameters.Add("@Un", SqlDbType.Text);
    command.Parameters["@Un"].Value = user.UserName;
    command.Parameters.Add("@P", SqlDbType.Text);
    command.Parameters["@P"].Value = user.Password;
    command.Parameters.Add("@E", SqlDbType.Text);
    command.Parameters["@E"].Value = user.Email;
    command.Parameters.Add("@B", SqlDbType.Text);
    command.Parameters["@B"].Value = user.Budget.Amount + "-" + user.Budget.Currency;
    command.Parameters.Add("@Ph", SqlDbType.VarChar);
    command.Parameters["@Ph"].Value = user.Phone;

    if (command.ExecuteNonQuery().Equals(0))
    {
        con.Close();
        return InternalServerError();
    }

    con.Close();

    return Ok();
}



很抱歉记录模糊:)

您用单引号包装变量名,而不是用单引号包装字符串值

您用单引号包装变量名,不是包装字符串值

而是在我未使用此sql注入预防措施时添加了此成功记录:d您能仔细阅读附加的安全加密和哈希密码吗?谢谢。
user.IsAdmin
仍在内联,而不是作为参数发送。此外,
TEXT
数据类型已过时,应替换为
VARCHAR(MAX)
,并且在最后一个参数上,始终指定VARCHAR参数的长度。哦,这些是非常有用的注释!谢谢大家,你提到过,我对这个很陌生。这种盐渍密码和散列密码现在有点难了,但我会读到这些。原因是(我在内联中插入IsAdmin)它是错误的默认值。Bcoz,我将手动选择管理员。或者,当我增加声誉时,用户将获得它。再次,非常感谢您在我不使用sql注入预防时添加了这些成功的记录:您能阅读一下附加的安全加密和哈希密码吗?谢谢。
user.IsAdmin
仍在内联,而不是作为参数发送。此外,
TEXT
数据类型已过时,应替换为
VARCHAR(MAX)
,并且在最后一个参数上,始终指定VARCHAR参数的长度。哦,这些是非常有用的注释!谢谢大家,你提到过,我对这个很陌生。这种盐渍密码和散列密码现在有点难了,但我会读到这些。原因是(我在内联中插入IsAdmin)它是错误的默认值。Bcoz,我将手动选择管理员。或者,当我增加声誉时,用户将获得它。再次,非常感谢,一开始没有必要引用它们。哦,非常感谢,苏。你知道,我对这件奇妙的事情很陌生:)哦,我以为多个答案是可以接受的,但我错了:这就是为什么你的答案没有被检查。首先没有必要引用它们。哦,非常感谢你。你知道,我对这件奇妙的事情很陌生:)哦,我以为多个答案是可以接受的,但我错了:这就是为什么你的答案没有被检查。