C#中字符串变量,加了转义字符的(例:string str = @”ab\”!c”),
中间能插入字符串变量吗?
一般:String sql = “Select a from table1 Where a = ‘” + para + ”’”;
不一般: String sql = @“Select a from table1 Where a = ‘” + para + ”’”;(可能多行)

解决方案 »

  1.   

    可以插入字符串变量String sql =String.Format(@“
        SELECT a 
          FROM table1 
         WHERE a ='{0}'
           AND b='{1}'
         ",para,para1);
      

  2.   


    String sql =String.Format(@"
        SELECT a 
          FROM table1 
         WHERE a ='{0}'
           AND b='{1}'
         ",para,para1);
      

  3.   

    看清了你的问题了,觉得问题比标题更低级。如果这回没看错,你的意思是你担心用了 @,那么会丢失拼接字符串里面的转义字符。这说明你对编程语言基本概念都不清楚。@"\" 的意思就是告诉编译器,这是一个反斜杠的字符。注意是编译器,编译器是什么估计你理解不深刻,它是将源代码翻译成目标代码的程序。注意这一点,目标程序里面只有这个反斜杠的字符(假设是一个字节,叫0x5c),而不管它是从"\\"来的,还是从@"\"来的。至于para里面的内容,运行的时候才能确定。假设里面也有个“\\”,它怎么会被编译器转换为单个“\”呢?至于我说这个问题不要问,很明显,我不是说你不要问问题,而是接着前面的话,你理解了基本概念,这些问题自然就明白了,不需要问了。初学者首先要把基本语言搞清楚,而不是去实现什么功能,这是我给你的一点建议。再次看了你的问题和几个回答,觉得这一点我没有说错。最后,“符”也被你写错了。别人有没有文化和你关系不大。做好自己的事情吧。
      

  4.   


    另外也不建议这样的写法,这种习惯很不好。应该使用参数化SQL。
      

  5.   

    〉另外也不建议这样的写法,这种习惯很不好。应该使用参数化SQL。
    7楼的这位,说话就知道是个.net高手啊。
    能给个参数化SQL的小例子吗?
      

  6.   

    string queryString = "select a from table1 where a = @para";
    SqlCommand cmd = new SqlCommand(queryString, conn);
    cmd.Parameters.Add("@para", para);
    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    DataTable dt = new DataTable();
    adapter.Fill(dt);
    this.GridView1.DataSource = dt;
    this.GridView1.DataBind();
      

  7.   

    哈哈,是的,这里只是说明了下String.Format的使用。