C#双引号只转义字符

时间:2016-02-17 02:14:56

标签: c# sql

我正在尝试将转义字符用于"构造如下的SQL字符串:

selSQL += " WHERE [" + sFieldArr[i, 0] + "]" + op + "\"" + sFieldArr[i, 1] + "\"";

但它不正确地生成字符串,例如

WHERE [State]=\"Illinois\"

我应该如何逃避双引号?

更新:正如评论中指出的那样,转义字符实际上正常工作,它们只是出现在调试器中工作不正常。问题是SQL Server将其解释为列名 - 请参阅此文章:https://support.microsoft.com/en-us/kb/222664

解决方案是使用两个单引号而不是一个双引号。

2 个答案:

答案 0 :(得分:0)

如上所述here,您可以使用带有两个双引号的at符号:

selSQL += " WHERE [" + sFieldArr[i, 0] + "]" + op + @"""" + sFieldArr[i, 1] + @"""";

输出:

WHERE [State]="Illinois"

答案 1 :(得分:0)

您可以使用逐字字符串文字来转义它。

> sapply(queries, xpathSApply, doc=xml, fun=xmlValue)
      street-address  locality      region  postal-code 
[1,] "77 Yesler Way" "Seattle"     "WA"    "98104-2530"
[2,] "88 Yesler Way" "Seattttttle" "WAAAA" "99999-2530"

或者如果你想做正常的方式,

@" WHERE [" + sFieldArr[i, 0] + "]" + op + @"""" + sFieldArr[i, 1] + @"""";

正如您所说的" WHERE [" + sFieldArr[i, 0] + "]" + op + "\""" + sFieldArr[i, 1] + "\"""; 值,他们应该返回

sFieldArr

但在你的情况下,我建议做以下

WHERE [State]="Illinois"