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,我将手动选择管理员。或者,当我增加声誉时,用户将获得它。再次,非常感谢,一开始没有必要引用它们。哦,非常感谢,苏。你知道,我对这件奇妙的事情很陌生:)哦,我以为多个答案是可以接受的,但我错了:这就是为什么你的答案没有被检查。首先没有必要引用它们。哦,非常感谢你。你知道,我对这件奇妙的事情很陌生:)哦,我以为多个答案是可以接受的,但我错了:这就是为什么你的答案没有被检查。