本帖最后由 qq2593010346 于 2012-11-22 16:57:44 编辑

解决方案 »

  1.   

    这是普通的sql文执行,不是存储过程
      

  2.   

    insert into,这明显是sql语句吗,只不过是参数化,不是拼接
      

  3.   


                OleDbCommand cmd = new OleDbCommand();
                cmd.CommandType = CommandType.StoredProcedure;
    有这句代码的才是存储过程。上面两种效果是一样的,一个使用了参数化,一个直接拼接。
    使用参数化可以有效的防止sql注入。
      

  4.   


    不一定要用这张方式调用存储过程,直接拼调用SQL的语句夜行……
      

  5.   

    不是存储过程,使用了参数化的SQL语句。
      

  6.   

    两个都不是存储过程,一个使用了参数化的Command,一个使用的拼接SQL语句的Command.
      

  7.   


    使用参数化就可以防止 SQL注入了吗?
    还是要储存过程才可以防止SQL注入?
      

  8.   

    谢谢你的回答,再请教个问题以下两个参数有什么不一样?在防止SQL注入的效果上都一样吗?都可以防止SQL注入吗?            new OleDbParameter("@menuParentNodeId", model.MenuParentId)            new OleDbParameter("@menuParentNodeId", MySqlDbType.Text, 15)
      

  9.   

    在防止SQL注入的效果上是一样的,第一个会根据值推断参数类型,第二个是指定的。