我想问一下,查询和参数与hashbytes有什么不同? 我的代码是
.CommandText = "update table.pass " _
& "set password = convert(varchar(12),HASHBYTES('MD5','" & TextEdit3.Text.ToUpper.ToString & "'),2) where userid='" + USER_ID + "'"
我的第二个代码是
.CommandText = "update table.pass " _
& " set password = convert(varchar(12),HASHBYTES('MD5',@pass),2) where userid=@userid"
.Parameters.AddWithValue("@pass", TextEdit3.Text.ToUpper.ToString)
.Parameters.AddWithValue("@userid", USER_ID)
现在iam使用第一个代码,我知道由于sql注入它是错误的。所以我想使用第二个代码。但结果与第一个代码不同。
我想要的是,我如何使用参数但结果与第一个代码相同,因为我的前任使用了第一个
答案 0 :(得分:2)
我认为nvarchar
假设String
数据为Add
。通常建议使用VarChar
并在对将使用哪种数据类型有任何疑问时自行指定数据类型。如果你这样做并指定"set password = convert(varchar(12),HASHBYTES('MD5',N'"
,那么你应该得到相同的结果。
编辑:要么在第一个代码中加上'N'前缀,即
if(value instanceof Array){
value.forEach((subVal, index)=>{
let a = subVal.value
this.form.controls[key].patchValue({index,a})
})
//
}else{
this.form.controls[key].patchValue(value);
}