string upString="UPDATE  MonitorSeg SET aCol=@aCol, bCol=@bCol,cCol=@cCol WHERE date = @date and time=@time";string inString=@"insert into MonitorSeg(aCol,bCol,cCol,date,time) values(@aCol,@bCol,@cCol,@date,@time)";两条sql语句,为什么一条在语句前加了@符号,一个没加,我看很多数上sql语句都有这两种写法,到底以哪种写法为主了?还有@在这表示什么意思?

解决方案 »

  1.   

    是不是和这个差不多.
    @"c:\windows\system32\123.dll"
    "c:\\windows\\system32\\123.dll"
    等着学习
      

  2.   

    "c:\\Windows" = @"c:\Windows"@"select 
    *
    from
    xxx"
      

  3.   

    字符串里面的@是代表的参数,换句话说哪些@的地方是要你传数据进去的。字符串前面的@和SQL语句无关,是字符串上的表示,有了这个就不会识别转义字符了,
    举个例子:@"c:\Docs\Source\a.txt" 和 "c:\\Docs\\Source\\a.txt"是等同的。加@在写路径的时候比较方便,不过一些特殊字符如换行等也无法识别了,在用转移字符的时候还要老老实实的写。
      

  4.   

    跟sql语句无关.@在c#中为强制不转义 的符号,在里面的转义字符无效
    string str1 = "abc\n"; // 这里\n当然默认转为换行符
    string str2 = @"abc\n" // 这里\n不自动转为换行符号,相当于 str2 = "abc\\n"
      

  5.   

    多说一句,如果不是SQL Server的话,那么设置参数就不能用@了,要用?而且不用输入名称(输了也不认的),为了方便也可以用%参数名%代替,不过要在VS的选项中设置数据库工具中的查询分析器中进行设置,否则这个查询设计器是不认的。其实那个%参数名%也是瞎掰,还是按顺序认的,自欺欺人(VS自动生成的都是%Param1%,%Param2%...)看大家喜好了。
      

  6.   

    换行需要 。。不加的 话 SQL 长了 。。第Ⅱ行就不是 字符串了