C# 离奇的逃避性格问题
我在c#asp.net页面的文本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#代码
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注入问题。