1.用了它可以防止SQL注入是吗?
2.SqlParameter usbianhao = new SqlParameter("@bianhao", SqlDbType.VarChar, 20);
            usbianhao.Value = bianhao;
            myCommand.Parameters.Add(usbianhao); SqlParameter[] paras = new SqlParameter[]
                    { 
                        new SqlParameter("@col1", SqlDbType.Int, 4)
}
  paras[0].Value = DropDownList1.Text.Trim();
 foreach (SqlParameter para in paras)
            {
                myCommand.Parameters.Add(para);
            }
myCommand.Parameters.Add(new sqlParameters("@bianhao",TextBox1.Text)
这是我知道三种生成SQLparameter的方法,其中最后一段没有检查类型,它同样起到防止SQL注入的功能吗?

解决方案 »

  1.   

    防止SQL注入不是绝对的  但是这种写法肯定要比拼接字符串参数好多了。
      

  2.   

    即使没有指定类型,假如用户输入sql注放语句到参数,该语句也不会被执行,除非你的存储过程也是通过拼接的方式
      

  3.   

    用参数可以限制前台提交的数据类型,比如id=1,你将id的参数类型设置为system.sqldbtype.int32, 
    那如果SQL注入时,出现id='1 or 1=1',类似这样的情况。id已经不是整型了。自然就不能提交。 
    在一定程度上,用参数可以避免SQL注入。但并不完全
      

  4.   

    防止SQL注入肯定是很多方面的,使用sqlparameter是其中之一,第3种代码最方便,但是它没有指定类型,我就想知道它能不能和第1,2种代码一样有效果?