string strsql = "update board set title=@Title where board_ID=@Board_ID";

string strsql="update board set title='"+title+"'where board_id="+board+";
有什么区别啊????????

解决方案 »

  1.   

    @Title 是SqlSeaver的变量
    title  是.net中的变量
    实际应用效果是一样的
      

  2.   

    在C#中,第一种情况下:还需创建sqlparameter 对象,给@Title 赋值
            第二种情况下,直接赋值
      

  3.   

    第二种方便
    直接在.net中操作
      

  4.   

    第一种情况下:还需创建sqlparameter 对象,给@Title 赋值,安全性较高,程序可读性强.
     第二种情况下,直接赋值,如果要防止sql注入式攻击需要另外过滤字符串
      

  5.   

    过滤字符串
    public  string   FunStr(string str)
    {
    str = str.Replace("&","&");
    str = str.Replace("<","&lt;");
    str = str.Replace(">","&gt");
    str = str.Replace("'","''");
    str = str.Replace("*","");
    str = str.Replace("\n", "<br/>");
    str = str.Replace("\r\n", "<br/>");
    str = str.Replace("?","");
    str = str.Replace("select","");
    str = str.Replace("insert","");
    str = str.Replace("update","");
    str = str.Replace("delete","");
    str = str.Replace("cr0eate","");
    str = str.Replace("drop","");
    str = str.Replace("delcare","");
    str = str.Replace(" ", "&nbsp;"); str = str.Trim();
    if(str.Trim().ToString()=="")
    str = "";
    return  str;
    }
      

  6.   

    第一种可以防止sql injection吧,安全点