SqlCommand cmd = new SqlCommand("select * from WARE where warename='" + TextBox1.Text + "'", conn); 这个可以SQL注入,明白。
//SqlCommand cmd = new SqlCommand("jian", conn);
//cmd.CommandType = CommandType.StoredProcedure; //cmd.Parameters.AddWithValue("a", TextBox1.Text); 这句话什么意思?后面注释的三句话是如何做到防止SQL注入的呢?
//SqlCommand cmd = new SqlCommand("jian", conn);
//cmd.CommandType = CommandType.StoredProcedure; //cmd.Parameters.AddWithValue("a", TextBox1.Text); 这句话什么意思?后面注释的三句话是如何做到防止SQL注入的呢?
cmd.Parameters.Add("@name",SqlDbType.VarChar,50);
cmd.Parameters["@name"].Value = textbox.text.toString();
@a text
AS
SELECT * FROM [WARE] where [warename] = @a
RETURN
GO
SqlCommand cmd = new SqlCommand("select * from WARE where warename=@a", conn);
cmd.Parameters.AddWithValue("@a", TextBox1.Text.Replace("'","''"));
过滤单引号,指定数据类型和长度
使用sqlcommand参数还要TextBox1.Text.Replace("'","''")吗,请问?
如果使用参数化传递,且传递进去的字符串不是用于内部拼接SQL语句的,就不存在被注入的危险,当然就不需要TextBox1.Text.Replace("'","''"),那样简直就是画蛇添足,破化原意。仔细一看,那段“cmd.Parameters.AddWithValue("@a", TextBox1.Text.Replace("'","''"));”怎么又出自“wuyq11(人生如梦)” 之手,对此人的技术深表怀疑,已经多次让我看到离谱的错误了,而且基本上是接分走人,不修正自己的错误。