strsql += "and sno='" + strsno.ToString() + "'";什么意思?
strsql += "and sno=@strsno";什么意思?

解决方案 »

  1.   

    就我所知道的回答一下。strsql += "and sno='" + strsno.ToString() + "'";
    这里边因为带了单引号,说明sno字段是字符型。如果不带引号则是数值型。除此之外这两个表达式一样,但使用的地方不同。如果用在存储过程,或者用在在.net ObjectDatasource(不知道怎么说了)之中,必须传递参数,就要使用第二种方法。
      

  2.   

    比如说你写一个存储过程(stored procedure)Create Procedure GetSalesById
        (
            @Id int,
            @Sales money OUTPUT
        )
    As
        SELECT @Sales = sales
        FROM sample
        WHERE id = @Id就只能用第二种输入参数的方法。
      

  3.   

    SELECT @Sales = sales
      FROM sample
      WHERE id = @Id
    什么意思?带@符号什么意思呢?
      

  4.   

    这是参数化查询所必须的(即带@)  string name="张三";
      
      string sql="select * from 用户表 where 姓名='" + name + "'";
      
      //这样查询没有问题
      
      //但如果
      string name="张'三"; //即字符窜中存在单引号
      string sql="select * from 用户表 where 姓名='" + name + "'"; 这样的语句在执行时就会报错
      
      //如果你的数据库中保存的不含单引号的,可以通过简单的过滤把单引号过滤掉,但如果有那就必须用参数化查询才能查询得到该条记录。
      即:
      string sql="select * from 用户表 where 姓名=@name";  另外,参数化查询除了上面这种情况以外,还有就是防止sql注入,具体如何参数化查询,网上例子非常多
      
      

  5.   

    @是为了防止SQL注入。
    你去找下SQL注入的例子就知道了。
      

  6.   

    区别就是第一个可能会造成SQL注入,会破坏数据库第二个通过参数 微软会替你过滤危险脚本,对数据库更安全。
      

  7.   

    SELECT @Sales = sales   --- 是把检索出来的字段值赋给@Sales
      FROM sample
      WHERE id = @Id        --- @Id是一个参数变量
      

  8.   

    没什么特殊的区别..执行都一样的.就是用参数传值更安全.防止sql注入..
      

  9.   


    那么.....姓名='" + name + "'";和........姓名=@name";的区别?
      

  10.   

    书上说Command提供程序不支持命令参数,必须使用@占位符,例如:
    Command1.CommandText = "select sno, sname, sage FROM student WHERE sdept =@sdept"可是书上的例子:
    if(combox1.Text == "计算机系")
    command2.CommandText = "select sno, sname, sage FROM student WHERE (sdept = '计算机系')";
    这个又没有用占位符.....我有点糊涂
    如果可以不用占位符是不是又可以写成
    string sql ="select sno, sname, sage FROM student WHERE sdept = '+sdept+';