C# 离奇的逃避性格问题

C# 离奇的逃避性格问题,c#,asp.net,sqlcommand,escaping,C#,Asp.net,Sqlcommand,Escaping,我在c#asp.net页面的文本中嵌入了以下c#代码 string commandString = "SELECT tblData.Content " + "FROM tblData " + "WHERE (tblData.ref = N\'%"+myCurrentREF+"%\')"; 这破坏了我的代码,因为它显然不能使用\'转义字符。为什么会这样?其他转义字符,如\“正在工作,那么为什么\”不工

我在c#asp.net页面的文本
中嵌入了以下c#代码

string commandString = "SELECT tblData.Content " +
                        "FROM tblData " +
                        "WHERE (tblData.ref = N\'%"+myCurrentREF+"%\')";

这破坏了我的代码,因为它显然不能使用
\'
转义字符。为什么会这样?其他转义字符,如
\“
正在工作,那么为什么
\”
不工作?

您不需要转义单引号。但是如果您这样做,您可以尝试@approach。

如果您选择“作为字符串终止符”,则序列“正在工作”

如果使用@“作为初始字符串终止符,则序列\”不会转义引号(但“”会转义)

所以\“不是一个“通用”转义序列,\”也不是

string commandString = "SELECT tblData.Content " +
                    "FROM tblData " +
                    "WHERE (tblData.ref = '%"+myCurrentREF+"%')";

这是正确的方法,但不是=不表示like?,或者字符串总是以%?

开头。我不知道您为什么认为需要转义一个引号。为什么需要转义“?单引号在C#strings中不是一个特殊字符。仅供参考:根据其他代码的情况,您很可能会遇到SQL注入问题。